728x90
DP 사용
class Solution {
boolean[][] dp;
public int solution(String s) {
int answer = 0;
dp = new boolean[s.length()][s.length()];
for(int i=0;i<s.length();i++){
dp[i][i] = true; //단일 문자는 펠린드롬을 만족하는 조건이다.
answer = 1;
}
for(int i=0;i<s.length()-1;i++){
// 만약 'aa', 'bb'와 같이 동일한 문자가 연속해서 나오는 경우는 별도로 갱신해준다
if(s.charAt(i)==s.charAt(i+1)) dp[i][i+1] = true;
}
for(int len = 3;len<=s.length();len++){
for(int i=0;i+len<=s.length();i++){
int j = i+len-1;
if(s.charAt(i)==s.charAt(j) && dp[i+1][j-1]){
dp[i][j] = true;
answer = len;
}
}
}
return answer;
}
}
첫번째 for문과 두번째 for문으로 각각 길이 1인 문자열과, 동일한 문자가 연속해서 나오는 길이 2의 문자열의 팰린드롬 처리는 완료 되었다.
이 이후부터 길이 3인 문자열부터 시작하여 문자열의 길이만큼 반복해 해당 길이의 문자열이 팰린드롬을 만족하는지 확인한다.
728x90
'알고리즘' 카테고리의 다른 글
[LeetCode] 501. Find Mode in Binary Search Tree (0) | 2023.12.06 |
---|---|
[LeetCode] 145. Binary Tree Postorder Traversal (0) | 2023.12.06 |
[LeetCode] 144. Binary Tree Preorder Traversal (0) | 2023.12.05 |
[LeetCode] 94. Binary Tree Inorder Traversal (0) | 2023.12.05 |
[LeetCode] 111. Minimum Depth of Binary Tree (0) | 2023.12.05 |