![](/img/trans.png)
[英]How to convert a string to a palindrome with minimum number of character replacement such that palindromic string contains a given word?
[英]Java: How to create the shortest palindrome of a string by inserting the minimum number of characters?
我目前有以下實現,該實現通過插入最少數量的字符來查找給定字符串中最短的回文,但是僅在最前面處理字符插入以創建最短的回文。
但是,通過以下實現或者如果還有更好的實現,我該如何在可將字符插入字符串的任何點以使其成為回文的情況下做到這一點?
將接受並支持答案。 謝謝
public class Answer {
public String findShortestPalindrome(String s) {
int len = s.length();
if (len <= 1) {
return s;
}
int i = len - 1;
for (; i >= 0; --i) {
if (stringIsPalindrome(s, 0, i)) {
break;
}
}
StringBuilder sb = new StringBuilder(s.substring(i + 1));
sb.reverse().append(s);
return sb.toString();
}
public boolean stringIsPalindrome(String s, int start, int end) {
while (start < end) {
if (s.charAt(start) != s.charAt(end)) {
return false;
}
start++;
end--;
}
return true;
}
}
差異尋找可處理字符串中任何點插入的最短回文。
您可以嘗試此解決方案。 這應該工作!
public boolean stringIsPalindrome(String s, int start, int end) {
String str1 = s.substring(0,Math.floor((end-start)/2));
String str2 = s.substring(Math.floor((end-start)/2),end);
str2 = reverseString(str2);
return str1.equals(str2);
}
public String reverseString(String s) {
//YOUR REVERSE STRING METHOD
}
您可以實現以下種類的蠻力算法:
如果first與last不相同,則有兩個選擇:
left = last + palindromed(input without last) + last or right = first + palindromed(input without first) + first
因此,在此步驟中,您選擇最短的解決方案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.