package StringAndArray;
/**
* 最长重复子字符串:123321||12321
*
* Time O(n^2), Space O(1)
*
* @author fh
*
*/
public class Longest_Palinadromic_Substring {
public static void main(String[] args) {
String input = "aqqaweoipn1234567899876543210mzcnzajkdakjs";
String longest = longestSub(input);
System.out.println(longest);
}
private static String longestSub(String input) {
String longest = null;
if (input.length() == 1) {
return input;
}
if (input == null) {
return null;
}
longest = input.substring(0, 1);
for (int i = 0; i < input.length(); i++) {
longest = find(input, i, i, longest);
longest = find(input, i, i + 1, longest);
}
return longest;
}
private static String find(String input, int start, int end, String longest) {
while (start >= 0 && end < input.length()
&& input.charAt(start) == input.charAt(end)) {
--start;
++end;
}
if ((end - start - 1) > longest.length()) {
longest = input.substring(start + 1, end);
}
return longest;
}
}