链接:https://leetcode.com/problems/shortest-palindrome/description/
Given a string s, you are allowed to convert it to a palindrome by adding characters in front of it. Find and return the shortest palindrome you can find by performing this transformation.
Example 1:
Input:"aacecaaa"
Output:"aaacecaaa"
Example 2:
Input:"abcd"
Output:"dcbabcd"
class Solution {
public:
string shortestPalindrome(string s) {
int j=0;
for(int i=s.size()-1;i>=0;i--)
{
if(s[i]==s[j])
{
j+=1;
}
}
if(j==s.size())
{
return s;
}
string suffix=s.substr(j);
//cout<<suffix;
//return suffix;
return Reverse(suffix)+shortestPalindrome(s.substr(0, j))+suffix;
}
string Reverse(string s)
{
if(s.empty() || s.size()==1)
return s;
int start=0,end=s.size()-1;
string t(s.begin(),s.end());
cout<<t;
while(start<end)
{
char c=t[start];
t[start]=t[end];
t[end]=c;
start++;
end--;
}
return t;
}
};
string shortestPalindrome(string s)
{
int n = s.size();
string rev(s);
reverse(rev.begin(), rev.end());
int j = 0;
for (int i = 0; i < n; i++) {
if (s.substr(0, n - i) == rev.substr(i))
return rev.substr(0, i) + s;
}
return "";
}