给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。
示例 1:
输入: “aacecaaa”
输出: “aaacecaaa”
代码
class Solution {public int getShortestPalindrome(String s) {//求next数组的最后一个元素char[] temp=s.toCharArray();int n=s.length();int[] next=new int[n+1];int k=-1,j=0;next[0]=-1;while (j<n){if(k==-1||s.charAt(k)==s.charAt(j)){j++;k++;next[j]=k;}else {k=next[k];}}return next[n];}public String shortestPalindrome(String s) {String t=s+'#'+new StringBuilder(s).reverse();
//将逆序字符串和原字符串拼在一起,求最长公共前缀int max=getShortestPalindrome(t);return new StringBuilder(s.substring(max)).reverse()+s;}
}