给定字符串S,您可以通过在字符串前面添加字符来将其转换为回文。查找并返回通过执行此转换可以找到的最短回文。
例如,给定“ aacecaaa”,返回“ aaacecaaa”;给定“ abcd”,返回“ dcbabcd”。
Java解决方案1
public String shortestPalindrome(String s) {
int i=0;
int j=s.length()-1;
while(j>=0){
if(s.charAt(i)==s.charAt(j)){
i++;
}
j--;
}
if(i==s.length())
return s;
String suffix = s.substring(i);
String prefix = new StringBuilder(suffix).reverse().toString();
String mid = shortestPalindrome(s.substring(0, i));
return prefix+mid+suffix;}