1 / 2
May 2019

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

    May '19
  • last reply

    May '19
  • 1

    reply

  • 813

    views

  • 2

    users

  • 1

    link

I’m quite sure what you’re asking, but can see that you get TLE when submitting.

Take a look at Wikipedia2.