728x90
반응형
728x90
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 한다
문자열이 입력되면 해당 문자열이 팰린드롬이면 true, 아니면 false를 출력한다.
단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않는다.
알파벳 이외의 문자들의 무시한다.
반응형
팰린드롬을 만들 때 문자열을 뒤집어서 같은지 같지 않은지 확인만 해주면 된다.
정규표현식을 써서 알파벳이 아닌 문자는 공백으로 지워버린다.
str = str.replaceAll("[^A-Za-z]", "").toLowerCase();
그리고 문자열을 뒤집을 때,
for문을 이용해서 하나하나 뒤집어서 문자열을 새로 만드는 것은 비효율적이다.
StringBuilder의 reverse를 이용해서 뒤집으면 수월하게 만들 수 있다.
String reverse = new StringBuilder(str).reverse().toString();
다음 문자열을 입력했을 때, true를 반환하면 된다.
found7, time: study; Yduts; emit, 7Dnuof
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Main m = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(m.solution(str));
}
public static boolean solution(String str) {
boolean answer = true;
str = str.replaceAll("[^A-Za-z]", "").toLowerCase();
String reverse = new StringBuilder(str).reverse().toString();
if(!str.equals(reverse)) answer = false;
return answer;
}
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘/java] 조합을 구하는 코드 공식 (0) | 2021.11.30 |
---|---|
[알고리즘/java] 2차원 배열 행, 열, 대각선 최대값 구하기 (0) | 2021.09.06 |
[알고리즘/java] 에라스토테네스의 체 - int형 배열 (0) | 2021.09.06 |
[알고리즘/java] 중복된 문자 제거하기 (0) | 2021.09.06 |
[알고리즘/java] 특정 문자만 뒤집기를 할 때 (0) | 2021.09.06 |
댓글