본문 바로가기
Java/Coding-Test

[Java] 1-7 회문 문자열

by JS1111 2022. 1. 14.

문제

앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "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";  
}

StringBuilderreverse()를 이용한 방법

기억할 점

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

댓글