使用String.equals()检查字符串是否是回文结构

1 java palindrome

我有一个关于我正在写的基本程序的问题,说赛车这样的词是否是回文.

我所有反转字符串的方法,剥去标点符号的工作,但确定它是否是回文的那个方法却没有.

/**
* 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)

pax*_*blo 6

好吧,我不确定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功能(但不太多的钱).这些调试语句应该足以让您找出问题所在.


Bra*_*nar 5

如果string reverseString(String string),并删除了所有空格,那么检查是否有什么是回文应该是

public boolean isPalindrome(String string)
{
    return string.equals(reverseString(string));
}
Run Code Online (Sandbox Code Playgroud)

当然这是区分大小写的,所以如果你的回文定义不关心套管,那么请改用equalsIgnoreCase.

如果这不起作用,那么您可能需要再次检查您的剥离和反向字符串方法.