문제 링크: leetcode.com/problems/longest-palindromic-substring/
Longest Palindromic Substring - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
문제 요약: 가장 긴 Palindromic(앞뒤로 읽어도 같은문자)를 반환하시오.
문제 접근: 단순히 루프를 돌면서 앞뒤 char를 뽑아서 비교했다.
class Solution {
public String longestPalindrome(String s) {
if (s.length() < 2) return s;
// default 가장 긴 palindrome
String result = "" + s.charAt(0);
for (int i = 0; i < s.length(); i++) {
// 처음문자부터 시작하고,
char first = s.charAt(i);
// first로 시작하는 문자열중 palindrome인 문자를 담을 변수
String temp = "";
// 거꾸로 시작해서,
for (int j = s.length()-1; j > i; j--) {
char second = s.charAt(j);
// 처음과 끝이 같다면 그 문자열을 추출해서 비교한다.
if (first == second) {
String subString = s.substring(i, j+1);
boolean isPalindrome = this.checkPalindrome(subString);
// 처음에 찾는 문자가 가장 긴 문자열이므로 다음 루프는 하지 않는다.
if (isPalindrome) {
temp = subString;
break;
}
}
}
// 가장 긴 문자를 체크하기 위해 비교
if (temp.length() > result.length()) result = temp;
}
return result;
}
public boolean checkPalindrome(String s) {
boolean result = true;
for (int i = 0; i < s.length()/2; i++) {
char first = s.charAt(i);
char second = s.charAt(s.length()-1-i);
if (first != second) {
result = false;
break;
}
}
return result;
}
}
ide에서 substring 자동완성을하면 substring(int beginIndex, int endIndex) 로 나와있어서, begin부터 end까지의 문자열을 뽑는줄알아서 틀렸었었다. (javadoc을 보면 beginIndex 포함, endIndex 불포함) 그래서 j+1로해야 원하는 대로 진행된다.
'Algorithm > LeetCode' 카테고리의 다른 글
LeetCode 83. Remove Duplicates from Sorted List (0) | 2021.01.12 |
---|---|
LeetCode 67. Add Binary (0) | 2021.01.11 |
LeetCode 38. Count And Say (0) | 2021.01.11 |
LeetCode 278. First Bad Version (0) | 2021.01.11 |
LeetCode 35. Search Insert Position (0) | 2021.01.11 |