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"
.
1 public class Solution { 2 public string ShortestPalindrome(string s) { 3 int i = 0, end = s.Length - 1, j = end; 4 5 while (i < j) 6 { 7 if (s[i] == s[j]) 8 { 9 i++; 10 j--; 11 } 12 else 13 { 14 i = 0; 15 end--; 16 j = end; 17 } 18 } 19 20 var sb = new StringBuilder(); 21 22 for (int k = s.Length - 1; k > end; k--) 23 { 24 sb.Append(s[k]); 25 } 26 27 for (int k = 0; k < s.Length; k++) 28 { 29 sb.Append(s[k]); 30 } 31 32 return sb.ToString(); 33 } 34 }