https://www.acmicpc.net/problem/17609
풀이생각
Main
static int t;
static String s;
static char[] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
String s = br.readLine();
arr=s.toCharArray();
int left=0;
int right=s.length()-1;
if(check(left,right)) {
sb.append(0).append('\n');
continue;
}
if(checkS(left,right)) {
sb.append(1).append('\n');
}else {
sb.append(2).append('\n');
}
}
System.out.println(sb.toString());
}
check 1
private static boolean check(int left,int right) {
while(left<=right) {
if(arr[left]!=arr[right]) {//다름
return false;
}
left+=1;
right-=1;
}
return true;
}
// 회문이 맞는지
check2
private static boolean checkS(int left,int right){
while (left <= right) {
if (arr[left] != arr[right]) {//다름
boolean a = check(left + 1, right);
boolean b = check(left, right - 1);
if (a == false && b == false) {
return false;
} else return true;
}
left += 1;
right -= 1;
}
return true;
}
//아예 회문이 아닌애랑 그래도 비슷한애 구분
투 포인터 단 방향, 방향 다른거(배열 1개, 2개 짜리 예제 만들기)