java统计一个字符串中某个字符串出现的个数

本文分享了三种在Java中计算特定子字符串出现次数的方法:直接法、间接法和使用集合法。直接法利用indexOf()进行逐次查找;间接法则通过replaceAll()替换后比较长度;集合法虽提及但未详述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人初学java,仅根据所学知识总结了几个方法。

1.方法一:直接法

通过indexOf()寻找指定字符串,截取指定字符串后面的部分,再次寻找,直到找完所有

public void countString(String str,String s) {
	int count = 0,len = str.length();
	while(str.indexOf(s) != -1) {
		str = str.substring(str.indexOf(s) + 1,str.length());
		count++;
	}
	System.out.println("此字符串有" + count + "个" + s);
}

 

2.方法二:间接法

将源字符串中的指定字符串用空替换,存到另一个字符串中,两者长度相减再除去指定字符串长度

public void countString(String str,String s) {
    	String str1 = str.replaceAll(s, "");
		int len1 = str.length(),len2 = str1.length(),len3 = s.length();
		int count = (len1 - len2) / len3;
		System.out.println("此字符串有" + count + "个" + s);
}

3.方法三:使用集合

可以指定字符串和对应次数存入Map集合中,但不需要这么麻烦,此处略去

 

现在再看觉得好像没有必要。。。。orz

但写都写了,发出去算了

 

### Java 实现统计字符串中每个英文字母出现次数 以下是基于提供的引用以及专业知识设计的一种解决方案,该方案能够有效统计字符串中的每一个英文字母(不分大小写)的出现次数。 #### 方法说明 通过遍历字符串并利用数组存储字母频率的方式可以高效完成此功能。以下是一个完整的实现: ```java import java.util.Arrays; public class LetterFrequencyCounter { public static void main(String[] args) { String input = "HelloWorld"; // 输入字符串 int[] frequency = new int[26]; // 创建长度为26的整型数组用于记录每种字母的频次 // 遍历字符串中的字符 for (char c : input.toLowerCase().toCharArray()) { if (c >= 'a' && c <= 'z') { frequency[c - 'a']++; } } // 输出结果 for (int i = 0; i < frequency.length; i++) { if (frequency[i] > 0) { System.out.println((char)(i + 'a') + ": " + frequency[i]); } } } } ``` 上述代码实现了以下几个核心逻辑: 1. 将输入字符串转换成小写形式以便统一处理[^1]。 2. 使用 `for` 循环逐一读取字符串中的字符,并判断其是否属于英文字符范围 (`a-z`)。 3. 如果当前字符是有效的英文字母,则将其映射到对应的索引位置上增加计数器值[^2]。 4. 最终打印出所有非零频率的结果[^3]。 这种方法的时间复杂度接近 O(n),其中 n 是给定字符串的长度,因此效率较高适合大多数应用场景需求。 #### 注意事项 - 上述程序假设只关心标准ASCII码表内的英文字母(`a-z`, `A-Z`);如果需要支持更多种类的语言字符集可能还需要额外考虑编码问题。 - 对于非常大的数据量或者实时性要求较高的场合下,还可以探索更高级的数据结构比如哈希表来进一步优化性能表现。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值