펠린드롬

Seung jun Cha·2022년 11월 1일
0

1. 전체 길이를 2로 나눈 몫의 전까지의 인덱스를 비교
문자열의 길이에서 인덱스 i만큼 빼고 거기에 -1 까지 해줘야 함

GooG
0123  

인덱스 0과 3을 비교 (인덱스 0과 인덱스 4-0-1를 비교)
인덱스 1과 2를 비교 (인덱스 1과 인덱스 4-1-1을 비교)

   public String solution(String input) {

        int len = input.length();
        String aCase = input.toLowerCase();
        
        for (int i = 0; i < len / 2; i++) {
            if (aCase.charAt(i) != aCase.charAt(len - 1 - i)) {
                return "NO";
            }
        }
        return "YES";
    }

2. StringBuilder의 reverse를 이용 : equalsIgnoreCase

 public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String next = sc.next();

        String reverse = new StringBuilder(next).reverse().toString();
        if (next.equalsIgnoreCase(reverse)){
            System.out.println("YES");
        }else
            System.out.println("NO");
    }

3. replaceAll 정규식 사용

  • 문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요.
    단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.

모두 알파벳 소문자로 바꾸고 a-z까지 아닌 것은 없앤다.

주어진 문자 : found7, time: study; Yduts; emit, 7Dnuof

    public String solution(String input) {

        String s = input.toLowerCase().replaceAll("[^a-z]", "");
        String s1 = new StringBuilder(s).reverse().toString();
        
        if (s.equals(s1)){
            return "YES";
        }else
            return "NO";
    	}
    }

0개의 댓글