1
/**
 * @(#)palindrome1.java
 *
 * palindrome1 application
 *
 * @author 
 * @version 1.00 2013/11/15
 */

public class palindrome1 {

    static boolean isPalindrome(String str) {
        int count=0;
        //check all characters of sequence is palindrome
        for(int i = 0; i < str.length();i++)
        {
            if(str.charAt(i)!=str.charAt(str.length()-1-i))
            {
                return false;
            }
        }
        //if it is return true otherwise return false
        return true;
    }

    public static void main(String[] args) {

        // TODO, add your application code
        String sentence= "bob gave that pop race car to me." ;
        String sentenceMax="";
        String sentenceNew="";

        sentence = sentence.replace( " ","");
        for(int i = 0;i<sentence.length();i++)
        {
            for(int k=0;k<i;k++)
            {
                sentenceNew = sentence.substring(k,i);
                if(isPalindrome(sentenceNew)&&sentenceNew.length()>sentenceMax.length());
                {

                sentenceMax=sentenceNew;
                sentenceNew="";
                }
            }
        }
        System.out.println(sentenceMax);
    }
}

问题是:t 应该向用户询问一个句子,并在忽略句子中的空格的情况下找到句子中最长的回文子串并打印最长的回文子串。您必须使用您在 B 部分中编写的函数。句子必须不区分大小写。B 部分是 mycode 中名为 isPalindrome() 的第一个方法。输出应该是:

racecar

但我的代码输出:

e

我的代码有什么问题?

4

3 回答 3

2

您的代码中有:

if(isPalindrome(sentenceNew)&&sentenceNew.length()>sentenceMax.length());

并且;是在糟糕的地方。因为它在那里,所以它把它当作一个空块,所以你的真实块{}一直在计算。

它应该是:

if(isPalindrome(sentenceNew)&&sentenceNew.length()>sentenceMax.length())
于 2013-11-14T23:57:54.640 回答
0

为什么不使用 StringBuffer 方法?

StringBuffer.reverse() 可以反转字符串,之后您可以使用 StringBuffer.indexOf(subString) 搜索还原后的 Source 字符串中的每个子字符串。

这不是更简单的方法吗?

于 2013-11-15T06:45:37.737 回答
0

您每次迭代都为 sentenceMax 分配一个新值。试试这个

sentenceMax += sentenceNew;
于 2013-11-14T23:50:02.540 回答