在java中使用递归解决leetcode上的回文问题

在java中使用递归解决leetcode上的回文问题,java,recursion,palindrome,Java,Recursion,Palindrome,我调试器代码如下所示,在“返回true”之前,所有东西都会查找。它不会立即返回,而是以某种方式返回。但是,我在调用方法本身时不赋值 我想如果我尝试使用while,在我完成递归之后,它会简单得多 谁能帮我找出这个错误吗 提前谢谢 class Solution { public boolean isPalindrome(String s) { s = s.toUpperCase(); return isPalindromeHelper(s, 0, s.leng

我调试器代码如下所示,在“返回true”之前,所有东西都会查找。它不会立即返回,而是以某种方式返回。但是,我在调用方法本身时不赋值

我想如果我尝试使用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
if(!Character.isleterordigit(ctail)){
最后--;
}

返回isAlindromeHelper(第一个、最后一个);//在添加回报之前,如果我尝试“一个人,一个计划,一条运河:巴拿马”,它似乎是错误的。然而,在我添加了“return”之后,它不知怎么起作用了。