/**
* @(#)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
我的代码出了什么问题?
答案 0 :(得分:2)
您的代码中包含:
if(isPalindrome(sentenceNew)&&sentenceNew.length()>sentenceMax.length());
;
处于不利地位。因为它在那里它将它视为具有空块的if,所以你的实际块{}
一直在计算。
应该是:
if(isPalindrome(sentenceNew)&&sentenceNew.length()>sentenceMax.length())
答案 1 :(得分:0)
您正在为每次迭代的sentenceMax分配一个新值。试试这个
sentenceMax += sentenceNew;
答案 2 :(得分:0)
为什么不使用StringBuffer方法?
StringBuffer.reverse()可以反转String 之后,您可以使用StringBuffer.indexOf(subString)搜索还原的Source字符串中的每个子字符串。
这不是一个更简单的方法吗?