【问题标题】:Counting a specific character in a string using a recursive method in Java使用Java中的递归方法计算字符串中的特定字符
【发布时间】:2017-10-18 21:19:55
【问题描述】:

我的作业是创建一个递归方法来计算给定字符串中给定字母的出现次数。到目前为止,这是我的代码:

import java.util.Scanner;
public class Exercise18_10 {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);    
    System.out.print("Enter a string: ");
    String str = sc.next();
    System.out.print("Enter a character: ");
    String letter = sc.next();
    char a = letter.charAt(0);
    System.out.println("The count of " + a + " is: " + count(str, a));

    }
    public static int count(String str, char a) {
        int count = str.indexOf(a);
        return count;
    }
}

count 中,我使用indexOf 查找所需字母的第一个匹配项,但我不知道在那之后该怎么做。

【问题讨论】:

  • 你知道indexOf(...)是做什么的吗?
  • 是的,它找到指定字符的第一次出现
  • 另外,你知道什么是递归吗?因为我什么都没看到。
  • 这就是我寻求帮助的原因,我不知道如何从中制作递归方法
  • 在 indexOf(a, 100);?

标签: java string recursion methods character


【解决方案1】:

您的count 变量是字符串中第一次出现的位置。相反,您需要类似

public static int count(String str, char a) {
    int exist = str.indexOf(a);
    if ( <a doesn't exist in str*> )
        return 0;
    else {   /* recur on the rest of the string; add 1 */
        rest = str.substr(exist+1, <end of string>)
        return count(rest, a) + 1
    }
}

我给你留下了很多代码,但这是两个基本步骤:

  • 基本情况:字符不存在,所以返回 0
  • 递归:计数一次,添加字符串其余部分。

【讨论】:

  • 谢谢你,这很有意义!
【解决方案2】:

正如您所说,“count”函数当前返回输入字母第一次出现的索引。递归计算出现次数的想法意味着您需要在前进时将字符串分解为越来越小的部分。

首先,您查看整个字符串,然后只查看当前字符串的子字符串,从下一次出现开始,依此类推。要在此处实现递归,您可能希望创建一个可以重复调用自身的方法(如 Inception!),并在完成后使用基本条件(即到达字符串末尾或找不到更多出现的字符)在你留下的字符串的任何部分 --> indexOf(...) == -1)

【讨论】:

  • 感谢您的回复,这很有帮助!
猜你喜欢
  • 2020-03-15
  • 1970-01-01
  • 2017-04-28
  • 2012-06-07
  • 2020-06-26
  • 1970-01-01
  • 2013-07-21
  • 2021-05-19
  • 2013-10-20
相关资源
最近更新 更多