[英]Shortest Palindrome
我已經寫了代碼,其中有一個String
(最初不是回文!),我的方法必須將其轉換為回文詞。 例如:
Given "aacecaaa", return "aaacecaaa".
Given "abcd", return "dcbabcd".
當我嘗試"abcd"
它只返回"dabcd"
盡管事實上我還有一個輔助方法private static boolean check(String myString)
,它檢查它是否已成為回文詞。 我試圖調試代碼,問題是在方法private static boolean check(String myString)
它甚至沒有進入循環! 請問smb請幫我解決這個問題?
public class ConverToPalindrome {
public static void main(String[] args){
String myString = "abcd";
String convert = shortestPalindrome(myString);
System.out.println(convert);
}
public static String shortestPalindrome(String myString){
String finalResult = "";
String temp = "";
for(int i = myString.length() - 1; i >= 0; i--){
temp += myString.substring(i) + "" + myString;
if(check(temp) == true){
finalResult = temp;
break;
}
}
return finalResult;
}
private static boolean check(String myString){
String temp = "";
for(int i = myString.length() - 1; i >= 0; i--){
temp += myString.charAt(i);
}
if(temp.equals(myString)){
return true;
}
else{
return false;
}
}
}
更改
temp += myString.substring(i) + "" + myString;
至
temp = new StringBuffer(myString.substring(i)).reverse() + "" + myString;
您也可以按相反的順序構建一個臨時字符串(逐個字符),並將其與原始字符串組合,直到形成回文。
public static String shortestPalindrome(String myString) {
String finalResult = "";
String temp = "";
String rev = "";
for (int i = myString.length() - 1; i >= 0; i--) {
rev += myString.charAt(i);
temp = rev + myString;
if (check(temp) == true) {
finalResult = temp;
break;
}
}
return finalResult;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.