// UVa 11888 - Abnormal 89's
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Main {
private static int[] t;
private static void buildPartialMatchTable(String w) {
int len = w.length();
t = new int[len];
t[0] = 0;
int i = 2, j = 0;
t[0] = -1;
t[1] = 0;
while (i < len) {
if (w.charAt(i - 1) == w.charAt(j)) {
t[i] = j + 1;
i++;
j++;
} else if (j > 0) {
j = t[j];
} else {
t[i] = 0;
i++;
}
}
}
public static int KMP(String s, String w) {
buildPartialMatchTable(w);
int m = 0, i = 0;
while (m + i < s.length()) {
if (w.charAt(i) == s.charAt(m + i)) {
i++;
if (i == w.length())
return m;
} else {
m += i - t[i];
if (i > 0)
i = t[i];
}
}
return s.length();
}
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
int cases = Integer.parseInt(reader.readLine());
for (; cases > 0; cases--) {
String s = reader.readLine();
if (s.length() == 0) {
System.out.println("simple");
continue;
} else if (s.length() == 1) {
System.out.println("palindrome");
continue;
}
String r = (new StringBuilder(s)).reverse().toString();
String ss = (new StringBuilder(s)).append(s).substring(1,
s.length() * 2 - 1);
int ssKmpResult = KMP(ss, r);
if (ssKmpResult + 1 < s.length())
System.out.println("alindrome");
else {
if (s.equals(r))
System.out.println("palindrome");
else
System.out.println("simple");
}
}
} catch (Exception ex) {
}
}
}
Saturday, April 18, 2015
UVa 11888 - Abnormal 89's
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment