앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요.
단 회문을 검사할 때 대소문자를 구분하지 않습니다.
첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.
gooG
YES
public class StringEx_7 {
public String solution(String str) {
String answer = "YES";
// String -> char 배열, 하나씩 순회하며 회문 체크
// char[] chars = str.toUpperCase().toCharArray();
// int lt=0, rt=chars.length-1;
// while (lt < rt) {
// // 회문이 아닌 경우 체크
// if (chars[lt] != chars[rt]) {
// answer = "NO";
// break;
// }
// lt++;
// rt--;
// }
// String의 길이를 구하고, charAt을 통해 반대짝과 비교하며 회문 체크
// str = str.toUpperCase();
// int len = str.length();
// for (int i=0; i<len/2; i++) {
// // 회문이 아닌 경우
// if (str.charAt(i) != str.charAt(len-1-i)) {
// answer = "NO";
// break;
// }
// }
// StringBuilder로 reverse한 후, 두 문장을 비교해 회문 체크
String tmp = new StringBuilder(str).reverse().toString();
if (!str.equalsIgnoreCase(tmp)) {
answer = "NO";
}
return answer;
}
public static void main(String[] args) throws IOException {
StringEx_7 T = new StringEx_7();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
System.out.println(T.solution(str));
}
}
대충 어떻게 풀어야하지?를 생각하며 시간을 보내는거보단 자그마한 예시를 들어가며 차근차근 생각해보는 게 더 좋은거 같다.