214. Shortest Palindrome
problem description
Input: "aacecaaa"
Output: "aaacecaaa"Input: "abcd"
Output: "dcbabcd"algorithm thought
code
class Solution {
public:
string shortestPalindrome(string s) {
if(s.size()==0)
return s;
vector<int> next(s.size(),-1);
string rs(s);
reverse(s.begin(),s.end());
getnext(next,rs);
int j=0,i=0;
while(i<s.size()){
if(j==-1||rs[j]==s[i]){
i++;j++;
}else{
j=next[j];
}
}
s+=rs.substr(j);
return s;
}
void getnext(vector<int>&next,string&s){
int j=-1,i=0;
while(i<s.size()-1){
if(j==-1||s[j]==s[i]){
i++;j++;
next[i]=j;
}else{
j=next[j];
}
}
}
};algorithm analysis
Last updated