我如下所示的调试器代码,看起来一切都找到了,直到“返回真”。它不会立即返回,而是以某种方式返回。但是,当我调用方法本身时,我没有分配值。
我想如果我尝试使用while,那么在完成递归操作后会简单得多。
任何人都可以帮助我找出错误吗?
提前感谢!
class Solution {
public boolean isPalindrome(String s) {
s = s.toUpperCase();
return isPalindromeHelper(s, 0, s.length() - 1);
}
public boolean isPalindromeHelper(String s, int first,int last) {
if(first >= last) {
return true;
} else {
char chead = s.charAt(first);
char ctail = s.charAt(last);
if(!Character.isLetterOrDigit(chead) || !Character.isLetterOrDigit(ctail)) {
if(!Character.isLetterOrDigit(chead)) {
first++;
}
if(!Character.isLetterOrDigit(ctail)) {
last--;
}
isPalindromeHelper(s, first, last);
}
else if(chead != ctail) {
return false;
}
}
first++;
last--;
return isPalindromeHelper(s, first, last);
}
}
我认为您的代码没有错。它似乎工作正常。您可能想要更改以下内容以包括方法调用的返回。
if(!Character.isLetterOrDigit(ctail)) {
last--;
}
return isPalindromeHelper(s, first, last); // <- added return
如果您能解释您认为哪里有问题,我会尽力帮助。