728x90
반응형
8. 유효한 팰린드롬
설명
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.
문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요.
단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.
알파벳 이외의 문자들의 무시합니다.
입력
첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
출력
첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.
예시 입력 1
found7, time: study; Yduts; emit, 7Dnuof
예시 출력 1
YES
import java.util.*;
public class Main {
public String solution(String str) {
StringBuilder sb = new StringBuilder();
String answer = "YES";
str = str.toLowerCase();
for (char x : str.toCharArray()) {
if (Character.isLetterOrDigit(x)) {
sb.append(x);
}
str = sb.toString();
}
String tmp = sb.reverse().toString();
if (tmp.equals(str))
return answer;
else
return answer = "NO";
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
System.out.println(T.solution(str));
}
}
한 줄 읽기
kb.nextLine();
알파벳 Or 숫자 확인 메서드
Character.isLetter(char)
Character.isDigit(x)
Character.isLetterOrDigit(char)
문자열비교 메서드
str2.equals(str)
+) 세련된 풀이 -> replaceAll 정규식을 이용
str.replaceAll("[^A-Z]", "");
// 알파벳만 두고 나머지 지우기
str.replaceAll("[^0-9]", "");
// 숫자만 두고 나머지 지우기
import java.util.Scanner;
public class Main {
public String solution(String str) {
String answer = "YES";
StringBuilder sb = new StringBuilder();
str = str.toUpperCase().replaceAll("[^A-Z]", "");
String tmp = sb.append(str).reverse().toString();
if (str.equals(tmp))
return answer;
else
return answer = "NO";
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
System.out.println(T.solution(str));
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String str=in.nextLine();
str=str.replaceAll("[^A-Za-z]", "");
StringBuilder sb= new StringBuilder();
String tmp=sb.append(str).reverse().toString();
// System.out.println(tmp+" "+str);
String answer=str.equalsIgnoreCase(tmp)?"YES":"NO";
System.out.println(answer);
}
}
728x90
반응형
'Java > Java 알고리즘 인프런' 카테고리의 다른 글
[Ch.01 - String] 10. 가장 짧은 문자거리 # (+ Math.min, charAt) (0) | 2022.05.16 |
---|---|
[Ch.01 - String] 09. 숫자만 추출 (+ replaceAll) (0) | 2022.05.15 |
[Ch.01 - String] 07. 회문 문자열 (+ str.equalsIgnoreCase(tmp)) (0) | 2022.05.15 |
[Ch.01 - String] 06. 중복문자제거 (+ charAt, indexOf) # (0) | 2022.05.15 |
[Ch.01 - String] 05. 특정 문자 뒤집기 (+ isAlphabetic) (0) | 2022.05.12 |