728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/12904#
문제 설명
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.
문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.
예를들면, 문자열 s가 abcdcba이면 7을 return하고 abacde이면 3을 return합니다.
제한사항
- 문자열 s의 길이 : 2,500 이하의 자연수
- 문자열 s는 알파벳 소문자로만 구성
입출력 예
sanswer
abcdcba | 7 |
abacde | 3 |
입출력 예 설명
입출력 예 #1
4번째자리 'd'를 기준으로 문자열 s 전체가 팰린드롬이 되므로 7을 return합니다.
입출력 예 #2
2번째자리 'b'를 기준으로 aba가 팰린드롬이 되므로 3을 return합니다.
class Solution
{
public int solution(String s)
{
int answer = 1;
//홀
for(int i=1; i<s.length(); i++) {
int tmp = 1;
int j = 1;
while((i-j) >= 0 && (i+j) < s.length()) {
if(s.charAt(i-j) == s.charAt(i+j)) {
tmp+=2;
if(answer < tmp) answer = tmp;
}
else break;
j++;
}
}
//짝
for(int i=1; i<s.length(); i++) {
int tmp = 0;
int savI = i;
int j = i-1;
while(j>=0 && savI<s.length()) {
if(s.charAt(j) == s.charAt(savI)) {
tmp += 2;
if(answer < tmp) answer = tmp;
}
else break;
j--; savI++;
}
}
return answer;
}
}
728x90
반응형
'알고리즘 > 문제 풀이 (출처: 프로그래머스)' 카테고리의 다른 글
[Java] 구명보트_프로그래머스 level 2 (0) | 2020.10.28 |
---|---|
[JAVA] 이중우선순위_프로그래머스 level3 (0) | 2020.10.27 |
[JAVA] 카펫_프로그래머스 level 2 (0) | 2020.09.12 |
[JAVA] 위장_프로그래머스 level 2 (0) | 2020.09.12 |
[JAVA] 다트 게임_프로그래머스 level 1 (0) | 2020.09.11 |