본문 바로가기
자바 알고리즘

07. 회문 문자열

by watergrace2u 2022. 4. 8.
반응형
SMALL
인프런 - 자바 알고리즘 강의

# 방법 1


1. String tmp = StringBuilder(문자열).reverse().toString() 을 이용하여 문자열을 완전히 뒤집는다.

2. str.equalsIgnoreCase(tmp) => 대소문자 구분 없는 equals 를 이용하여 원본 문자열과 뒤집은 문자열을 비교한다.
(그냥 toUpperCase() 나 toLowerCase()를 이용하여 모두 대문자/소문자로 만들어도 OK)

3. 비교한 결과 같으면 YES, 다르면 NO를 출력한다.

import java.util.Scanner;
  
public class Main {
 
  public String solution(String str){
    String answer = "YES";
    
    // 일단 모두 대문자로 만들어주기
    str = str.toUpperCase();
    int len = str.length();
    
    // str.charAt(i)와 str.charAt(len-i-1)비교
    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));
  }
}



# 방법 2


1. 모두 대문자로 만들어준다.

2. len(문자열의 길이) / 2 전까지만 검사해주어도 된다. (홀수,짝수 문자열 둘 다) => 회문 문자열이므로!

3. str.charAt(i) 와 str.charAt(len-i-1) 이 같으면 YES, 다르면 NO를 출력한다.

import java.util.Scanner;
  
public class Main {
  
  public String solution(String str){
    String answer = "NO";
    // 문자열 뒤집기
    String tmp = new StringBuilder(str).reverse().toString();
    
    // 대소문자 무시하여 비교
    if(str.equalsIgnoreCase(tmp)) answer = "YES";
    
    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));
  }
}



반응형
LIST

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

09. 숫자만 추출  (0) 2022.04.11
08. 팰린드롬 (replaceAll 정규식 이용)  (0) 2022.04.11
06. 중복 문자 제거  (0) 2022.04.08
05. 특정 문자 뒤집기  (0) 2022.04.08
04. 단어 뒤집기  (0) 2022.04.06

댓글