문제
문자열 s의 부분 문자열 중 앞뒤를 뒤집어도 똑같은 문자열 중 가장 긴 문자열을 구하라.
로직
1. s의 길이를 구한다.
2. s의 초기 길이부터 1을 빼가며 진행
3. 앞뒤로 같은지 판단하고 같으면 종료
이 문제는 어렵지 않지만 효율성에서 .substring, .StringBuilder의 reverse, 등을 활용해 경우마다 부분문자열을 구하는 것보다는 인덱스를 통해 비교하는 것이 더 효율적이라는 것을 기록하기 위해서 작성한다.
코드
class Solution{
public int solution(String s){
int length = s.length();
while(true){
if(length <= 1){
return 1;
}
for(int i=0; i+length<=s.length(); i++){
boolean success = true;
int mid = i+length/2;
int y = i+length-1;
for(int x=i; x<=mid; x++){
if(s.charAt(x) != s.charAt(y)){
success = false;
break;
}
y -= 1;
}
if(success){
return length;
}
}
length -= 1;
}
}
}
'Algorithm > Practice' 카테고리의 다른 글
Programmers - 줄 서는 방법 with JAVA (0) | 2023.07.05 |
---|---|
Programmers - 파괴되지 않은 건물 with JAVA (V) (0) | 2023.07.04 |
Programmers - 징검다리 건너기 with JAVA (V) (0) | 2023.07.03 |
Programmers - 124 나라의 숫자 with JAVA (0) | 2023.07.02 |
Programmers - 삼각 달팽이 with JAVA (0) | 2023.07.02 |