알고리즘/코테
[회문문자]
컵라면만두세트
2021. 10. 11. 19:13
문제
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요.
출력
첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.
예시 입력 gooG
예시 출력 YES
1. charAt 이용 풀이 (주석)
2. indexOf 이용 풀이
import java.util.ArrayList;
import java.util.Scanner;
public class test {
// 중복 문자열 제거
// 회문 찾기
public String solution(String str){
String answer = "YES";
String tmp = str.toUpperCase();
int len = str.length();
// len = 4
// 0 1 2 3
// 0 = 3
// 1 = 2
for(int i =0; i<len/2; i++){
// if(tmp.charAt(i) != tmp.charAt(len - i -1)) return "NO";
/*
*
* indexOf 풀이
* */
if(tmp.indexOf(i) != tmp.indexOf(len - i -1)) return "NO";
}
return answer;
}
public static void main(String[] args){
test T = new test();
Scanner sc=new Scanner(System.in);
String str = sc.next();
System.out.println(T.solution(str));
}
}
3. StringBuilder().reverse().toString() -> 거꾸로 뒤집어서 사용
str.equlas(tmp) 같은지 비교
import java.util.Scanner;
public class 회문문자열 {
public String soution(String str){
String answer = "YES";
// 0 1 1 0
String tmp = new StringBuilder(str).reverse().toString();
if(!str.equals(tmp)){
return "NO";
}
return answer;
}
public static void main(String args[]){
회문문자열 T = new 회문문자열();
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(T.soution(str));
}
}