개발놀이터
1-8. 유효한 회문 문자열 본문
package string.CircleString18.my;
import java.util.Scanner;
public class Main {
/**
* -내 풀이-
* 이번 문제 또한 lt 와 rt 를 도입해 공백, 특수문자를 if, else if 문으로 일일이 검사했다
*
* --피드백--
* 1-7번 문제와 동일한 피드백, 알고리즘 / 자료구조를 사용했다는 느낌이 안든다.
*
* -선생님의 풀이-
* 정규표현식 + replaceAll 로 아주 간단하게 풀어냈다. 간단한 정규표현식 정도는 알아두면 좋을 것 같다.
*
* "[^A-Z]"
* ^ : ~가 아닌
* A-Z : A 부터 Z 까지
* = A 부터 Z 가 아닌
*/
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
String input = kb.nextLine();
System.out.println(solution(input));
}
private static String solution(String input) {
input = input.toUpperCase();
int lt = 0, rt = input.length() - 1;
char[] c = input.toCharArray();
while (lt < rt) {
if (c[lt] == ' ') {
lt++;
}
else if (c[rt] == ' ') {
rt--;
}
else if (!(c[lt] >= 65 && c[lt] <= 90)) {
lt++;
}
else if (!(c[rt] >= 65 && c[rt] <= 90)) {
rt--;
}
else {
if (c[lt] != c[rt]) {
return "NO";
}
lt++;
rt--;
}
}
return "YES";
}
}
package string.CircleString18.teacher;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
System.out.println(solution(str));
}
private static String solution(String str) {
String answer = "NO";
str = str.toUpperCase().replaceAll("[^A-Z]", "");
String tmp = new StringBuilder(str).reverse().toString();
if (str.equals(tmp)) {
return "YES";
}
return answer;
}
}
'기타 > 코딩테스트' 카테고리의 다른 글
1-10. 가장 짧은 문자 거리 (0) | 2023.02.09 |
---|---|
1-9. 숫자만 추출 (0) | 2023.02.09 |
1-7. 회문 문자열 (0) | 2023.02.09 |
1-6. 중복된 문자 제거 (0) | 2023.02.07 |
1-5. 특정 문자 뒤집기 (0) | 2023.02.07 |