递归查找字符串中某个字符的出现次数(java)
我试图编写一个方法,返回字符串的第一个字符在整个字符串中出现的次数。这就是我到目前为止所做的递归查找字符串中某个字符的出现次数(java),java,string,recursion,Java,String,Recursion,我试图编写一个方法,返回字符串的第一个字符在整个字符串中出现的次数。这就是我到目前为止所做的 public int numberOfFirstChar0(String str) { char ch = str.charAt(0); if (str.equals("")) { return 0; } if ((str.substring(0, 1).equals(ch))) { return 1 + numberOfFirstCha
public int numberOfFirstChar0(String str) {
char ch = str.charAt(0);
if (str.equals("")) {
return 0;
}
if ((str.substring(0, 1).equals(ch))) {
return 1 + numberOfFirstChar0(str.substring(1));
}
return numberOfFirstChar0(str);
}
但是,它似乎不起作用,因为它不会返回字符串中出现次数的正确结果。代码有什么问题吗?非常感谢您的帮助。以下是一个简单的示例,说明您在寻找什么 密码
这使用了两个函数,一个是递归函数。我们只从字符串中获取第一个索引处的字符和字符数组一次,而不是反复执行并连接字符串。然后,我们使用递归继续遍历字符数组的索引 我不知道你为什么要这么做。一个简单的for循环将以更容易的方式实现这一点 私有静态int numberOfFirstChar0String str{ 如果str.isEmpty{ 返回0; } char[]characters=str.toCharArray; 字符=字符[0]; 返回发生率记分符,字符,0,0; } 私有静态int-occurrenceschar[]字符,字符,int索引,int-occurrences{ 如果索引>=characters.length-1{ 返回事件; } 如果字符[索引]==字符{ 事件++; } 返回发生率记分符、字符、++索引、发生率; } Java8解决方案 第一个字符串输入的私有静态长时间发生{ 如果input.isEmpty{ 返回0; } characterAtIndexZero=input.charAt0; 返回input.chars .filtercharacter->character==characterAtIndexZero 计数 }
public static void main(String args[]) {
//the string we will use to count the occurence of the first character
String countMe = "abcaabbbdc";
//the counter used
int charCount=0;
for(int i = 0;i<countMe.length();i++) {
if(countMe.charAt(i)==countMe.charAt(0)) {
//add to counter
charCount++;
}
}
//print results
System.out.println("The character '"+countMe.charAt(0)+"' appears "+ charCount+ " times");
}
The character 'a' appears 3 times