Java统计字符串中指定子串出现的次数

13 篇文章 0 订阅

本文是基于String类中的indexOf(String str, int fromIndex)方法,从指定的索引开始,返回第一次出现的指定子字符串在此字符串内的索引实现子串出现次数的统计。

例如1:字符串 abcacababc 包含 3 个子字符串 ab ;
例如2:字符串 aaaaaa 包含 5 个子字符串 aa 。

代码实现如下

/**
 * 统计某个字符串中指定子串出现的次数
 * @param base 字符串
 * @param subString 子字符串
 * @return 字符串中子字符串出现的次数
 */
public static int totalSubStringCount(String base,String subString){
	if(subString == null || "".equals(subString)) return 0;
	int count = 0;
	int fromIndex = 0;
	while(true){
		int index = base.indexOf(subString, fromIndex);
		if(index == -1) break;
		fromIndex = index + 1;
		count++;
	}
  return count;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用循环遍历字符串,每次比较字符串的一段子串是否与指定子串相同,如果相同则计数器加一。最后返回计数器的值即可。 具体实现可以参考以下代码: ```c #include <stdio.h> #include <string.h> int countSubstring(char *str, char *subStr) { int count = ; int len1 = strlen(str); int len2 = strlen(subStr); for (int i = ; i <= len1 - len2; i++) { if (strncmp(str + i, subStr, len2) == ) { count++; } } return count; } int main() { char str[] = "hello world, hello c language"; char subStr[] = "hello"; int count = countSubstring(str, subStr); printf("'%s'出现'%s'的次数为:%d\n", str, subStr, count); return ; } ``` 输出结果为: ``` 'hello world, hello c language'出现'hello'的次数为:2 ``` ### 回答2: 在C语言统计字符串指定子串出现次数可以通过遍历字符串的方法来实现。具体实现方法如下: 首先,我们需要定义一个计数器用来存储指定子串字符串出现次数,初始值为0。然后,我们需要使用一个循环来遍历字符串的每个字符。在每次循环,我们需要将指定子串与当前遍历到的子串进行比较,如果相同,则计数器加1。最后,循环结束后,返回计数器的值即可。 下面是代码实现过程: #include <stdio.h> #include <string.h> int countSubstring(char *str, char *substr) { int count = 0; int len1 = strlen(str); int len2 = strlen(substr); for(int i = 0; i <= len1 - len2; i++) { if(strncmp(str+i, substr, len2) == 0) { count++; } } return count; } int main() { char str[] = "hello world, hello C language"; char substr[] = "hello"; int count = countSubstring(str, substr); printf("'%s'出现'%s'的次数为:%d", str, substr, count); return 0; } 在这段代码,countSubstring函数用来统计字符串str出现子串substr的次数。首先,我们获取字符串str和子串substr的长度。然后,我们使用一个循环来遍历字符串str的每个字符,并使用strncmp函数来比较指定子串与当前遍历到的子串是否相同。如果相同,则计数器count加1。最后,返回计数器count的值。 通过运行上述代码,我们可以得到输出结果为:'hello world, hello C language'出现'hello'的次数为:2。可以看出,代码实现成功,函数能够正确地统计字符串指定子串出现次数。 ### 回答3: 在C语言统计字符串指定子串出现次数,可以通过循环遍历整个字符串,逐个判断子串是否出现,再记录出现次数的方法来实现。 具体来说,可以使用两层循环,外层循环遍历整个字符串,内层循环用来匹配与子串长度相等的字符串片段是否与子串相同。若相同,则计数器加一,然后外层循环继续向后遍历。 以下是一个简单的代码示例: ```c #include <stdio.h> #include <string.h> int main() { char str[100], sub[20]; int count, len1, len2, i, j; printf("请输入字符串:"); gets(str); printf("请输入子串:"); gets(sub); len1 = strlen(str); len2 = strlen(sub); count = 0; for (i = 0; i <= len1 - len2; i++) { for (j = 0; j < len2; j++) { if (str[i+j] != sub[j]) break; } if (j == len2) count++; } printf("子串'%s'在字符串'%s'出现了%d次。\n", sub, str, count); return 0; } ``` 在上面的代码,我们定义了两个字符数组 `str` 和 `sub` 来分别存储输入的字符串子串。变量 `len1` 表示字符串长度,`len2` 表示子串长度。变量 `i` 和 `j` 分别用来作为循环计数器,变量 `count` 用来记录出现次数。 程序的外层循环从字符串的开头依次往后遍历,内层循环从当前位置开始匹配同样长度的子串与 `sub` 是否相同。若相同,则计数器加一,表示找到了一个子串出现的位置。 最后,输出统计结果,显示子串字符串出现次数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值