Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

ultra_dev

문자열.회문문자열 본문

알고리즘

문자열.회문문자열

ultra_dev 2023. 1. 12. 01:30

7. 회문 문자열

설명

앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.

문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요.

단 회문을 검사할 때 대소문자를 구분하지 않습니다.

입력

첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.

출력

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

예시 입력 1

gooG

예시 출력 1

YES

📌 첫번째 방법

len/2만큼 for문 돌면서 charAt(i)와 charAt(len-1-i) 비교

import java.util.Scanner;

class Main {
    public String solution(String str) {

        //GOOG로 예를 들면 0123임. length를 2로 나눠서 몫 부분보다 적게 i가 돌아야됨
        //i는 인덱스니까 하나 적으니 그냥 i<length/2 해도 될듯.. 위의 예시로 치면 GO만 알면 G랑 G, O랑 O 비교 가능하니
        //즉 0번째인덱스와 3번째 인덱스, 1번째와 2번째인덱스 같은지 보면 되니까 절반만 알면됨
        //인덱스니까 렝스/2의 몫보다 작아도 딱 절반 ex) 길이 4니까 2고 i는 0부터 도니까 i<length/2하면 0,1까지 돌테니
        //홀수도 마찬가지! 몫도 /2 한 걸로! stuts의 경우 가운데는 혼자니 비교 안해도 되니 st만 비교하면 됨

        String answer = "YES";
        str=str.toUpperCase(); //대소문자 상관없으니 모두 대문자로
        int len = str.length();
        for (int i = 0; i < len / 2; i++) {
            if (str.charAt(i) != str.charAt(len - 1 - i)) {//i는 앞으로 len-1은 뒤로 전진!!!!
                answer = "NO";
            }
        }
        return answer;
    }
    
        public static void main (String[]args){
            Main T = new Main();
            Scanner sc = new Scanner(System.in);
            String str = sc.next();
            System.out.println(T.solution(str));
        }
    }

📌 2번째 방법

StringBuilder().reverse().toString()와 str이 일치하는지 equalsIgnoreCase()로 비교

import java.util.Scanner;

class Main {
    public String solution(String str) {

        String answer = "NO";
        String tmp = new StringBuilder(str).reverse().toString();
        if(str.equalsIgnoreCase(tmp)) answer = "YES";
			//그냥 equals로 하면 대소문자 구분 못하니 equalsIgnoreCase -> 대소문자 구분 안함
 
       
        return answer;
    }

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

'알고리즘' 카테고리의 다른 글

문자열.문장 속 단어(indexOf(),substring())  (0) 2023.01.12
문자열.단어뒤집기  (0) 2023.01.12
문자열.중복문자제거  (0) 2023.01.12
문자열.대소문자  (0) 2023.01.12
문자열.문자찾기  (0) 2023.01.12
Comments