返回包含在字符中的子字符串的递归方法

问题描述 投票:0回答:1

无法使用其他方法或添加参数,只能递归调用该方法。我真的不明白如何解决这个问题。我有点挣扎着把我的思想集中在递归上,这对我来说是如此赤裸裸。

子字符串将包含在第一个字符和最后一个字符之间。有人可以指导我吗?除了我的基本情况之外,我知道我所掌握的内容是不正确的..我觉得我不完全理解每一步发生了什么。

public static String theSub(String str, char first, char last) {
        if (str.length() == 0 ) {
            return str;
        }
        else if (str.charAt(0)==first) {
            return str.substring(1, str.length() - 1);
        }
      //infinite recursion..
        return theSub(str,first,last);
    }
java string recursion substring infinite-recursion
1个回答
0
投票

“...子字符串将包含在第一个和最后一个字符之间。有人可以指导我吗?除了我的基本情况之外,我知道我所写的内容是不正确的..我觉得我不完全理解什么每一步都在进行......”

例如,如果字符串是 "f(f(f(x)))",并且您想要获得 x

本质上,当firstlast都存在时,获取substring并进行递归调用。

public static String theSub(String str, char first, char last) {
    if (str.length() == 0 ) return str;
    int i = str.indexOf(first), j = str.lastIndexOf(last);
    if (i == -1 || j == -1) return str;
    return theSub(str.substring(i + 1, j), first, last);
}
© www.soinside.com 2019 - 2024. All rights reserved.