我的LeetCode代码仓:https://github.com/617076674/LeetCode
原题链接:https://leetcode-cn.com/problems/shortest-palindrome/description/
题目描述:
知识点:回文字符串、KMP算法
思路一:暴力破解法
要找到满足题目要求的最短回文串,本质是要找到最长的回文子串,该子串的左端点与字符串s的左端点重合。
时间复杂度是O(n ^ 2),其中n为字符串s的长度。空间复杂度是O(n)。
JAVA代码:
class Solution {
public String shortestPalindrome(String s) {
int index = -1;
for(int i = s.length() - 1; i >= 0; i--){
if(isPalindrome(s.substring(0, i + 1))){
index = i;
break;
}
}
String result = reverse(s.substring(index + 1));
return result + s;
}
private String reverse(String s){
StringBuilder stringBuilder = new StringBuilder(s);
return stringBuilder.reverse().toString();
}
private boolean isPalindrome(String s){
for(int i = 0; i < s.length() / 2; i++){
if(s.charAt(i) != s.charAt(s.length() - 1 - i)){
return false;
}