Java 回文堆栈
我写这个方法是为了检查一个单词是否是回文,但是当它是回文时,它总是返回false 公共布尔值isAlindrome(字符串s){Java 回文堆栈,java,stack,Java,Stack,我写这个方法是为了检查一个单词是否是回文,但是当它是回文时,它总是返回false 公共布尔值isAlindrome(字符串s){ inti; int n=s.长度(); 堆栈=新堆栈(); 对于(i=0;i
inti;
int n=s.长度();
堆栈=新堆栈();
对于(i=0;i
我不知道你为什么不使用{
}
括号。尽早学习适当的Java约定
if (c != s.charAt(i)); // <- this semicolon is your problem
return false;
此外,for循环上的逻辑可能由于类似的原因而存在缺陷。删除分号,更好的做法是始终使用括号:
if (c != s.charAt(i)) {
return false;
}
@jhamon还指出,在while循环中,实际上从未增加i
:
while(!stack.empty( )) {
char c = stack.pop( );
if (c != s.charAt(i)) {
return false;
}
i++;
}
正确地缩进代码将真正帮助您理解并注意
for(anycondition)doSomething();doOtherThing()
完全不同于(anycondition){doSomething();doOtherThing();}同意@sleepToken,您可能希望看到Java约定。虽然他们已经超过20岁了,但他们还没有过时关于永不改变的i
值是什么?@ChrisAgbemabiese您是否记得删除在您的if
语句之后添加code>,并用{
}
括号替换它?
if (c != s.charAt(i)) {
return false;
}
while(!stack.empty( )) {
char c = stack.pop( );
if (c != s.charAt(i)) {
return false;
}
i++;
}