214\. Shortest Palindrome

Hard

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" 

**Constraints:**

*   <code>0 <= s.length <= 5 * 10<sup>4</sup></code>
*   `s` consists of lowercase English letters only.