长度超出限制的字符串偶数编号的字符串

时间:2019-02-11 14:24:54

标签: java string recursion indexoutofboundsexception palindrome

我写了我的方法版本,该方法可以测试单词是否是回文。用奇数长度的字符串似乎可以很好地工作,但是用偶数长度的字符串进行测试时会发生“字符串超出范围异常”错误。

任何帮助将不胜感激!

public static boolean palindrome(String s, int start, int end) {

int length = s.length();


        if (length%2 != 0 && start != end) {
            if (s.charAt(start) == s.charAt(end)) {
                return palindrome(s,start+1,end-1);
            }
            else {
                return false;
            }
        }
        else if(length%2 == 0 && (start+1) != (end-1)) {
            if (s.charAt(start) == s.charAt(end)) {
                return palindrome(s,start+1,end-1);
            }
            else {
                return false;
            }
        }
        else if(length%2 != 0 && start == end) {
            return true;
        }
        else if(length%2 == 0 && start+1 == end-1) {
            if (s.charAt(start+1) == s.charAt(end-1)) {
                return true;
            }
            else {
                return false;
            }
        }
        else {
            return false;
        }

    }

1 个答案:

答案 0 :(得分:1)

我认为您的代码有点不必要,很复杂,您正在使用索引来执行Java中子字符串可以执行的操作。此外,通过在基本案例中考虑它们,您可以避免偶数或奇数的许多情况。我试图保持您的方法,并尽可能减少代码。我认为这要干净得多。在基本情况下,如果数字为奇数,它将以1结束,如果为偶数,将以2结束。

listen_address: {{ nodes }}