문제
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요.
단 회문을 검사할 때 대소문자를 구분하지 않습니다.
입력
첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
출력
첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.
예시 입력
gooG
예시 출력
YES
출처
내 풀이
for문 사용
private static String isPalindrome1(String input) {
// 대소문자 구별하지 않기 위해 toLowerCase()
char[] chars = input.toLowerCase().toCharArray();
// 서로 대칭되는지 확인
for (int i = 0; i < chars.length / 2; i++) {
if (chars[i] != chars[chars.length - 1 - i]) {
return "NO";
}
}
return "YES";
}
맨앞 문자부터 중간문자까지 대칭되는 위치의 문자와 같은지 확인한다
StringBuilder 사용
private static String isPalindrome2(String input) {
return input.equalsIgnoreCase(new StringBuilder(input).reverse().toString())
? "YES"
: "NO";
}
StringBuilder
의 reverse()
를 이용한 방법
기억할 점
String.equalsIgnoreCase()
String.equalsIgnoreCase()
를 사용하면 문자열을 비교할 때 대소문자를 무시할 수 있다
'Java > Coding-Test' 카테고리의 다른 글
[Java] 1-9 숫자만 추출 (0) | 2022.01.15 |
---|---|
[Java] 1-8 유효한 팰린드롬 (0) | 2022.01.15 |
[Java] 1-6 중복문자제거 (0) | 2022.01.13 |
[Java] 1-3 문장 속 단어 (0) | 2022.01.08 |
[Java] 1-1 문자찾기 (0) | 2022.01.04 |
댓글