检查一个单词是否是回文

时间:2014-10-25 11:10:10

标签: java

因此,当我用任何单词运行此代码时,它总是返回false。第一个String接受该单词,然后将其更改为小写。然后我正在构建一个新的String,将它与另一个字符串进行比较,该字符串作为原始单词的反向附加。我没有看到什么,或者你能告诉我它有什么问题吗?

public class Palindromes 
{
	public static void main(String[] args) 
	{
		int count = Integer.parseInt(args[0]);
		for(int i = 1; i <= count; i++)
		{
			System.out.print(isPalindrome(args[i]) + " ");
		}
	}
	public static boolean isPalindrome(String s)
	{
		String str = s.toLowerCase();
		StringBuilder orig_str = new StringBuilder(str);
		StringBuilder revStr = new StringBuilder();
		for (int i = str.length()-1; i >= 0; i--) 
		{
			revStr.append(orig_str.charAt(i));
		}
		boolean isPal = (revStr == orig_str);
		return isPal;
	}		
}

1 个答案:

答案 0 :(得分:4)

将两个不同的StringBuilder实例与==进行比较,无论其内容如何,​​都会向您提供错误,因为它们不是同一个实例。

尝试revStr.toString().equals(str)

似乎StringBuilder无法覆盖Object equals,因此您必须在equals上执行String来自StringBuilder s。

的结果

BTW,StringBuilder有一个reverse方法,因此您可以在一行中重写您的方法:

public static boolean isPalindrome(String s) {
    return new StringBuilder(s.toLowerCase()).reverse().toString().equals(s.toLowerCase());
}