我有以下代码:
int t = s.length()-1;
int g = 0;
for (int i=0; i < s.length(); i++){
if (s.charAt(i) != h.charAt(t--));
g++;
}
if (g==0)
return true;
else
return false;
基本上这段代码应该做的是测试字符串 h 的逆是否等于字符串 s,反之亦然。由于某种原因,总是返回“false”——尽管显而易见的答案是 true。
任何人都可以告诉我我的代码有什么问题吗?
谢谢!
最佳答案
我会说额外的 ;
是罪魁祸首。
代替
if (s.charAt(i) != h.charAt(t--));
使用
if (s.charAt(i) != h.charAt(t--))
您应该始终走“安全”路线。也就是说,在 if-else 语句之后使用大括号(几乎所有可以使用它们的地方),这样一开始就不会发生这样的错误。正确的写法是:
if (s.charAt(i) != h.charAt(t--)) {
g++;
}
顺便说一句,如果您不先检查 s
和 h
是否具有相同的长度,您的代码就会崩溃。
关于java - 两个字符串的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5202562/