我正在解决leetcode中的125.有效回文问题。对于测试用例“一个人,一个计划,一条运河:巴拿马”,代码如下。它返回错误:
class Solution {
public boolean isPalindrome(String s) {
StringBuilder s1= new StringBuilder();
StringBuilder s2= new StringBuilder();
for(int i=0;i<s.length();i++)
{char curr= s.charAt(i);
if((curr<=57 && curr>=48) || (curr>=97 && curr <=122) || (curr<=90 && curr >=65)){
curr=Character.toLowerCase(curr);
s1.append(curr);
}
}
s2.append(s1);
s2.reverse();
if(s2.equals(s1)) {
return true;
}
return false;
}
}
这部分代码是问题所在:
if(s2.equals(s1)) {
return true;
}
你在这里所做的是比较两个
StringBuilder
对象,它们显然总是不同的。您应该做的是比较使用这些构建器构建的 String
。要从构建器获取字符串,您需要使用 toString
方法。所以,你的代码应该是这样的:
if(s2.toString().equals(s1.toString())) {
return true;
}
我已经使用此更改测试了您的代码,现在它可以正常工作。 我希望它有帮助。