Question
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.
For example:
Given "aacecaaa"
, return "aaacecaaa"
.
Given "abcd"
, return "dcbabcd"
.
Solution
Result: Accepted Time: 765 ms
Here should be some explanations.
char* shortestPalindrome(char* s) {
const int slen = strlen(s);
int i = 0, j = 0, k;
for(k = slen - 1; k >= 0 && i <= j; k--)
for(i = 0, j= k; i <= j && s[i]==s[j]; i++,j--);
char * ret = malloc(sizeof(char)*(slen * 2));
for(i = 0; i + k < slen - 2;i++)
ret[i] = s[slen-1-i];
strcpy(ret+i,s);
return ret;
}
Complexity Analytics
- Time Complexity:
- Space Complexity: