# Shortest Palindrome LeetCode Solution

Here, We see Shortest Palindrome LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.

# List of all LeetCode Solution

## Problem Statement

You are given a string `s`. You can convert `s` to a

palindrome by adding characters in front of it.

Return the shortest palindrome you can find by performing this transformation.

Example 1:
Input: s = “aacecaaa”
Output: “aaacecaaa”

Example 2:
Input: s = “abcd”
Output: “dcbabcd”

## Shortest Palindrome SolutionC++

``````class Solution {
public:
string shortestPalindrome(string s) {
string t = process(s);
int n = t.length(), center = 0, right = 0;
int* palin = new int[n];
for (int i = 1; i < n - 1; i++) {
int i_mirror = 2 * center - i;
palin[i] = (right > i) ? min(palin[i_mirror], right - i) : 0;
while (t[i + palin[i] + 1] == t[i - palin[i] - 1])
palin[i]++;
if (i + palin[i] > right) {
center = i;
right = i + palin[i];
}
}
int pos;
for (int i = n - 2; i; i--) {
if (i - palin[i] == 1) {
pos = palin[i];
break;
}
}
string tail = s.substr(pos);
reverse(tail.begin(), tail.end());
return tail + s;
}
private:
string process(string& s) {
int n = s.length();
string t(2 * n + 3, '#');
t[0] = '\$'; t[2 * n + 2] = '%';
for (int i = 0; i < n; i++)
t[2 * (i + 1)] = s[i];
return t;
}
};```Code language: PHP (php)```

## Shortest Palindrome SolutionJava

``````class Solution {
public String shortestPalindrome(String s) {
int j = 0;
for (int i = s.length() - 1; i >= 0; i--) {
if (s.charAt(i) == s.charAt(j)) { j += 1; }
}
if (j == s.length()) { return s; }
String suffix = s.substring(j);
return new StringBuffer(suffix).reverse().toString() + shortestPalindrome(s.substring(0, j)) + suffix;
}
}```Code language: JavaScript (javascript)```

## Shortest Palindrome SolutionJavaScript

``````var shortestPalindrome = function(s) {
var prefix = "";
for (pos = head = tail = parseInt(s.length / 2); pos > 0; head = tail = --pos) {
pos--;
}
while (tail != s.length - 1 && s[tail + 1] === s[tail]) {
tail++;
}
var isSame = true;
isSame = false;
break;
}
tail++;
}
if (isSame) {
break;
}
}
for (var k = s.length - 1; k >= tail && k !== 0; k--) {
prefix += s[k];
}
return prefix + s;
};```Code language: JavaScript (javascript)```

## Shortest Palindrome SolutionPython

``````class Solution(object):
def shortestPalindrome(self, s):
r = s[::-1]
for i in range(len(s) + 1):
if s.startswith(r[i:]):
return r[:i] + s``````
Scroll to Top