当前位置: 首页 > 面试题库 >

使用递归查找字符串中的字符

嵇永望
2023-03-14
问题内容

我正在尝试查找字符串中字母的首次出现。例如,苹果中的p应该返回1。这是我拥有的:

// Returns the index of the of the character ch
public static int indexOf(char ch, String str) {

    if (str == null || str.equals("")) {
        return -1;
    } else if(ch == str.charAt(0)) {
        return 1+ indexOf(ch, str.substring(1));
    }

    return indexOf(ch, str.substring(1));
}

它似乎似乎没有返回正确的值。


问题答案:

您的尝试很好,但是还不够。这是基于您的正确实现:

public static int indexOf(char ch, String str) {
    // Returns the index of the of the character ch

    if (str == null || str.equals("")) {
        // base case: no more string to search; return -1
        return -1;
    } else if (ch == str.charAt(0)) {
        // base case: ch is at the beginning of str; return 0
        return 0; 
    }

    // recursive step
    int subIndex = indexOf(ch, str.substring(1));

    return subIndex == -1 ? -1 : 1 + subIndex;
}

您的尝试存在两个问题:

在这一else if部分中,您已经找到了角色,因此正确的做法是停止递归,但您仍在继续。

在最后一个return语句中,您需要在递归调用中加1(如果最终找到了该字符),作为累加总索引号的一种方式。



 类似资料:
  • 我试图使用这个递归函数来找到回文字符串,但是代码输出术语<code>alia

  • 问题内容: 如何递归地查找字符串中最长的单词? 编辑 说完了,谢谢大家。这是修改后的代码。 问题答案: 首先,让我们假设句子字符串参数没有任何前导或尾随空格。您可以通过调用trim()来处理递归情况。 然后,我们需要定义两种情况,即基本情况和递归情况。 基本情况是找不到空格,即传入的句子只是一个单词。在这种情况下,只需返回句子即可。 在递归的情况下,我们将得到第一个单词,其余的则与您一样。在句子的

  • 我是Python的超级新手,并试图创建一个非常简单的函数,用于更大的地图着色程序。 该函数的思想是将一组变量归于不同的区域(string1),并将颜色分配给它们(r、g、b),然后通过递归地查看一组区域边界(string2)来测试这些区域是否接触到相同颜色的另一个区域,以找到匹配的变量颜色。 输入格式如下:("Ar, Bg, Cb","AB, CB, CA")将返回True,这意味着没有相同颜色的

  • 我看到了这篇文章,它非常努力地解释了打印所有字符串的递归解决方案。 但当我们开始弹出堆栈时,我仍然无法得到部分。例如,递归一直进行到,在这里,基大小写遇到,它打印。但现在发生了什么?我们从函数调用堆栈弹出。我们用这个做什么等等? 谁能帮我解释一下吗? 另外,我需要一些关于时间复杂度的指示。不像完全的计算而是一些暗示。

  • 我有一个字符串“1,3,5,7,9,11,12,14”,我想检查该字符串在java中是否包含“12,3,14”。 我的代码:

  • 工作解决方案: 破“解”: 我们将单词字符定义为以下任一项: null null 第一行包含一个整数n,表示句子的数目。后面的每一行都包含一个由非单词字符分隔的单词组成的句子。下一行包含一个整数,表示查询的数量。后续行中的每一行都包含一个要检查的字符串。 制约因素 1≤n≤100 1≤q≤10 作为现有的子字出现时间。 作为悲观主义者的子词出现时间。 作为Optimist的子词出现时间。 whil