문제 설명
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요.
단, 회문을 검사할 때 대소문자는 구분하지 않습니다.
입력예시: gooG
출력예시: YES
문제 풀이
일반적인 방법은 포문을 반만 돌면서 양끝을 서로 비교해 다른 부분이 있으면 바로 return fasle를 내보내는 방법이다.
public String solution(String s) {
String result = "YES";
int len = s.length();
s = s.toLowerCase();
for(int i = 0; i < len/2; i++) {
if(s.charAt(i) != s.charAt(len-i-1)) {
return "NO";
}
}
return result;
}
대소문자를 구분하지 않기 위해 전체를 소문자로 통일했으며, 양끝을 비교하기 위해 i와 len-i-1을 사용했다.
다른 방법으론 전체를 reserve 시키고 이를 equals 비교하는 방법이다.
public String solution2(String s) {
String result = "NO";
String reverseString = new StringBuilder(s).reverse().toString();
if(s.equalsIgnoreCase(reverseString)) {
result = "YES";
}
return result;
}
대소문자 구분하지 않고 비교하기 위해 equalsIgnoreCase를 활용했다.
'알고리즘 with 자바' 카테고리의 다른 글
피보나치 수열 with 재귀(메모이제이션) (0) | 2021.05.01 |
---|---|
6. 중복문자제거 (0) | 2021.04.15 |
5. 특정 문자 뒤집기 (0) | 2021.04.11 |
4. 단어 뒤집기 (0) | 2021.04.10 |
3. 문장 속 단어 (0) | 2021.04.10 |