您的位置:首页 > 其它

Shortest Palindrome

2016-07-08 12:49 260 查看
public class Solution {
public String shortestPalindrome(String s) {
if (s.length() < 2) {
return s;
}
String newS = s + "#" + new StringBuilder(s).reverse().toString();
int[] pos = new int[newS.length()];

for (int i = 1; i < newS.length(); i++) {
int prePos = pos[i - 1];
while (prePos > 0 && newS.charAt(prePos) != newS.charAt(i)) {
prePos = pos[prePos - 1];
}
pos[i] = prePos + ((newS.charAt(i) == newS.charAt(prePos)) ? 1 : 0);
}
return new StringBuilder(s.substring(pos[pos.length - 1])).reverse().toString() + s;
}
}


KMP
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: