我有一个关于我正在写的基本程序的问题,说赛车这样的词是否是回文.
我所有反转字符串的方法,剥去标点符号的工作,但确定它是否是回文的那个方法却没有.
/**
* Determines if a series of letters makes a palinedrome
*
* @param str All punctuation and spaces have been removed
* before this method is called.
* @return true if phrase is a palindrome,
* false otherwise.
*/
public boolean isPalindrome(String str)
{
String d = reverseString (str);
return( str.equals (reverseString (str) ) );
}
Run Code Online (Sandbox Code Playgroud)
好吧,我不确定d你的功能有什么用途,因为它从未使用过,但如果你想知道为什么你的功能不起作用,只需添加调试代码:
public boolean isPalindrome (String str) {
System.out.println ("DEBUG: original string = '" + str + "'");
System.out.println ("DEBUG: reverse string = '" + reverseString (str) + "'");
if (str.equals (reverseString (str)))
System.out.println ("DEBUG: returning true");
else
System.out.println ("DEBUG: returning false");
return str.equals (reverseString (str));
}
Run Code Online (Sandbox Code Playgroud)
我敢打赌在那里被一些错误的reverseString功能(但不太多的钱).这些调试语句应该足以让您找出问题所在.
如果string reverseString(String string),并删除了所有空格,那么检查是否有什么是回文应该是
public boolean isPalindrome(String string)
{
return string.equals(reverseString(string));
}
Run Code Online (Sandbox Code Playgroud)
当然这是区分大小写的,所以如果你的回文定义不关心套管,那么请改用equalsIgnoreCase.
如果这不起作用,那么您可能需要再次检查您的剥离和反向字符串方法.