我一直在試圖解決查找字符串的最長迴文的問題。 雖然我能夠通過將中間的元素做,但我想通過string.reverse嘗試一下:最長的字符串迴文使用string.reverse
這裏是我的代碼:
的疑問:我使用string.reverse找到的反向給定的字符串,然後試圖比較反向字符串和輸入字符串中的每個子字符串,但這不會給我最大的迴文,但它會給所有可能的迴文... 另外,我在某處做了一些錯誤,請幫助我發現...
public class StringPalindrome {
public static void main(String args[]) {
StringBuilder strBuilder = new StringBuilder("Shubham");
StringBuilder a = new StringBuilder("");
a = strBuilder.reverse(); //Reverse the string and saving it into other string
for(int i=0;i<strBuilder.length();i++){ // Loop one for begin index
for(int j=1;i<strBuilder.length() + 1;j++){ // Loop two for end index
if(a.substring(i, j).equals(strBuilder.substring(i, j))){ // comparing
System.out.println(strBuilder.substring(i, j)); //printing palindrome
}
}
}
}
我不能想到如何fin最長的迴文?
我想用string.reverse,這將是一個短代碼:
雖然我能做到這樣:
public class LongestPalindrome
{
static public String expand(String string, int a, int b)
{
if (a > b)
return null;
int left = a, right = b;
while (left >= 0 && right < string.length() && string.charAt(left) == string.charAt(right))
{
left--;
right++;
}
return string.substring(left + 1, right);
}
static public String longestPalindrome(String string)
{
if (string == null)
return null;
String longest = string.substring(0, 1);
for (int i = 0; i < string.length() - 1; i++)
{
String palindrome = expand(string, i, i);
if (palindrome.length() > longest.length())
{
longest = palindrome;
}
palindrome = expand(string, i, i + 1);
if (palindrome.length() > longest.length())
{
longest = palindrome;
}
}
return longest;
}
public static void main(String[] args)
{
System.out.println(longestPalindrome("baraik"));
}
}
什麼是你的問題? –
你對「最長字符串迴文」的定義是什麼?我無法做出該循環的正面或反面,但是你的代碼有很多問題。對我來說,「字符串的最長迴文」只是意味着反轉輸入字符串並將其添加到原始字符的末尾... –
@ T.J.Crowder:你在這裏幫助人還是和尚其他......? 我的問題很簡單...我找不到找到最長的平行線的方法,而我只是能夠找到迴文.... –