회문문자열 (.equalsIgnoreCase())

Seungmin Lim·2022년 2월 4일
0

코딩문제연습

목록 보기
7/63

문제

나의풀이

import java.util.*;

class Main {
	public String solution(String str) {
		String answer = "YES";
		str = str.toLowerCase();
		
		//뒤집은것과 원래 스트링을 비교.
		String a = new StringBuilder(str).reverse().toString();
		if(!(a.equals(str))) return "NO";
        
        //뒤집은것과 원래 스트링을 비교2. equlasIgnoreCase() 사용
		String a = new StringBuilder(str).reverse().toString();
		if(!(a.equalsIgnoreCase(str))) return "NO";
		return answer;
		
		//직접비교
        int len = str.length();
		for(int i = 0; i<len/2;i++) {
			if(str.charAt(i) != str.charAt(len-i-1)) return "NO";
		}
		return answer;
    }
	
	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = kb.next();
		System.out.println(T.solution(str));
	}
	
}

풀이방법

  1. 문제만 보고 직접 풀어본 것인데, 전부 케이스를 같게 해주고 뒤집은것과 원래 스트링을 비교했다.
  2. .equalsIgnoreCase()메소드를 사용하면 대,소문자 관계없이 비교가 가능하다!
  3. 직접비교 하는 방식인데 홀,짝 상관없이 해당 string의 길이의 절반만 for문을 돌려 첫번째 문자와 마지막 문자를 비교. i가 증가하고 비교하는 문자도

핵심키워드

.equalsIgnoreCase() 메소드 활용하기! 코드의 양을 줄일수있다.

if(str.charAt(i) != str.charAt(len-1-i)) 이해하기!
len-1은 해당문자열의 마지막 인덱스인데 거기서 i가 증가하면서 빼기 때문에
0번째 vs 맨뒤 -> 1번째 vs 맨뒤-1 -> 2번째 vs 맨뒤-2 가 가능해진다.

0개의 댓글