Я показываю код отладчика, показанный ниже, и каждая вещь выглядит найти, пока "не вернет true". Он не возвращается сразу, вместо этого он вернулся как-то. Однако я не присваиваю значение при вызове самого метода.
Я думаю, что если я попытаюсь использовать while, было бы намного проще после того, как я завершу sh рекурсию.
Может кто-нибудь помочь мне разобраться в ошибке?
Заранее спасибо!
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);
}
}