import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int count = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int i = 0; i < T; i++) {
String S = br.readLine();
count = 0;
sb.append(isPalindrome(S)).append(" ").append(count).append("\n");
}
br.close();
System.out.print(sb);
}
static int isPalindrome(String s) {
return recursion(s, 0, (s.length() - 1));
}
static int recursion(String s, int start, int end) {
count++;
if (start >= end) return 1;
else if (s.charAt(start) != s.charAt(end)) return 0;
else return recursion(s, (start + 1), (end - 1));
}
}
펠린드롬을 찾는 문제이다.
펠린드롬이란 문자열의 데칼코마니(?)라고 생각하고있다.
앞으로 읽어도 같고 뒤로 읽어도 같은 문자를 펠린드롬이라 한다.
(내 이름은 이효리, 거꾸로해도 이효리 😆)
출력방식은 펠린드롬 여부에 따라 1, 0을 출력하고 그 뒤에는 recursion()
함수가 몇 번 호출되었는지 출력한다.
몇 번 호출되었는지 알 수 있도록 static 변수로 count를 세주었고
펠린드롬의 여부는 문자의 맨앞과 맨끝부터 한단계씩 가까워지며 문자가 같은지 확인하도록 하였다.
이 때, 문자열의 길이가 1인 경우는 문자하나 자체로 펠린드롬이다.