알고리즘/코테

[회문문자]

컵라면만두세트 2021. 10. 11. 19:13
문제
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요.

출력
첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.

예시 입력 gooG
예시 출력 YES

1. charAt 이용 풀이 (주석)

2. indexOf 이용 풀이 

import java.util.ArrayList;
import java.util.Scanner;

public class test {
    // 중복 문자열 제거
    // 회문 찾기
    public String solution(String str){
        String answer = "YES";
        String tmp = str.toUpperCase();
        int len = str.length();
        // len = 4
       // 0 1 2 3
       // 0 = 3
       // 1 = 2
        for(int i =0; i<len/2; i++){
//            if(tmp.charAt(i) != tmp.charAt(len - i -1)) return "NO";

            /*
            *
            * indexOf 풀이
            * */
            if(tmp.indexOf(i) != tmp.indexOf(len - i -1)) return "NO";


        }
        return answer;
    }
    public static void main(String[] args){
        test T = new test();
        Scanner sc=new Scanner(System.in);
        String str = sc.next();
        System.out.println(T.solution(str));


    }
}

 

3. StringBuilder().reverse().toString() -> 거꾸로 뒤집어서 사용 

    str.equlas(tmp) 같은지 비교

import java.util.Scanner;

public class 회문문자열 {
    public String soution(String str){
        String answer = "YES";
        // 0 1 1 0

        String tmp = new StringBuilder(str).reverse().toString();
        if(!str.equals(tmp)){
            return "NO";
        }
        return answer;
    }

    public static void main(String args[]){
        회문문자열 T = new 회문문자열();
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println(T.soution(str));

    }
}