public class Main {
private static final String FILE_NAME = “.\.\src\MirrorStrings\input.txt”;
public static void main(String args[]) throws Exception {
System.setIn(new FileInputStream(FILE_NAME));
Scanner sc = new Scanner(System.in);
String str = "", maxLength = "";
int nTestCase = sc.nextInt();
while (sc.hasNext()) {
str = sc.next();
maxLength = maxLongestPalindromeString(str);
int count = countLongestPalindromString(str, maxLength);
System.out.println(maxLength.length() + " " + count);
}
}
private static String maxLongestPalindromeString(String s) {
String strPalindrom = "";
String maxLengthPalindrom = "";
for (int i = 0; i < s.length() - 1; i++) {
strPalindrom = findPalindrom(i, i, s);
if (maxLengthPalindrom.length() < strPalindrom.length()) {
maxLengthPalindrom = strPalindrom;
}
strPalindrom = findPalindrom(i, i + 1, s);
if (maxLengthPalindrom.length() < strPalindrom.length()) {
maxLengthPalindrom = strPalindrom;
}
}
return maxLengthPalindrom;
}
private static int countLongestPalindromString(String s, String longest) {
int count = 0;
String strPalindrom = "";
if (longest.length() == 1) {
count = s.length();
} else {
for (int i = 0; i < s.length() - 1; i++) {
strPalindrom = findPalindrom(i, i, s);
if (strPalindrom.length() == longest.length()) {
count++;
}
strPalindrom = findPalindrom(i, i + 1, s);
if (strPalindrom.length() == longest.length()) {
count++;
}
}
}
return count;
}
private static String findPalindrom(int i, int j, String s) {
String strPalindrom = "";
while (i >= 0 && j <= s.length() - 1 && s.charAt(i) == s.charAt(j)) {
i--;
j++;
}
for (int k = i + 1; k < j; k++) {
strPalindrom += s.charAt(k);
}
return strPalindrom;
}
}
created
last reply
- 1
reply
- 813
views
- 2
users
- 1
link