기초코딩테스트 - String 회문문자열

고장난 고양이·2022년 3월 27일
0

codingtest-java

목록 보기
10/21

문제

설명

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

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

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

입력

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

출력

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

예시 입력 1

gooG

예시 출력 1

YES

코드

import java.util.*;
  
public class Main {
  public String solution(String str){
        str=str.toLowerCase();
        int lx=0;
        int rx=str.length()-1;

        while(lx<rx){
            if(str.charAt(lx)!=str.charAt(rx)){
                return "NO";
            }
            rx--;
            lx++;
        }
        return "YES";
    }

    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));
    }
}

탐색 지점을 두곳으로 두고 한곳은 맨왼쪽 한곳은 맨 오른쪽에 두고 시작한다.
탐색후 while에서 문제가 생기지 않으면 "YES"를 도중에 회문이 아님을 판단하면 "NO"를 반환한다.

참고할 코드

import java.util.*;
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.print(T.solution(str));
	}
}
  • str.equalsIgnoreCase(str) : 문자열 두개를 직접 비교한다.
    단, 대소문자는 구분안함

실제로 문자열을 stringbuilder의 reverse를 이용해 뒤집고 원래의 문자열과 비교하여 판단한다. ㄸㄸㄸㄸ

profile
개발새발X발일지

0개의 댓글

관련 채용 정보