Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用递归获取回文的有效方法_Java_Recursion - Fatal编程技术网

Java 使用递归获取回文的有效方法

Java 使用递归获取回文的有效方法,java,recursion,Java,Recursion,我试图使用递归获取回文,但我发现这非常昂贵,因为当我使用substring()方法时需要创建新字符串,就像在我的代码中一样: public static boolean isPalindrome(String s) { if (s.length() <= 1) return true; else if (s.charAt(0) != s.charAt(s.length() - 1)) return false; else retur

我试图使用递归获取回文,但我发现这非常昂贵,因为当我使用
substring()
方法时需要创建新字符串,就像在我的代码中一样:

 public static boolean isPalindrome(String s) {
    if (s.length() <= 1)
        return true;
    else if (s.charAt(0) != s.charAt(s.length() - 1))
        return false;
    else return isPalindrome(s.substring(1, s.length() - 1));
}
public静态布尔值isAlindrome(字符串s){

如果(s.length()您可以传递完整的原始
字符串及其索引,那么除了不创建这么多对象之外,它基本上是一样的

public static boolean isPalindrome(String s, int start, int end) {
    if ((end-start) <= 1)
        return true;
    else if (s.charAt(start) != s.charAt(end))
        return false;
    else return isPalindrome(s, start+1, end-1);
}

public static boolean isPalindrome(String s) {
    return isPalindrome(s, 0, s.length()-1);
}
public静态布尔值isAlindrome(字符串s,int start,int end){
如果((结束-开始)