Java 统计一个字符串,在另一个字符串中出现的次数 Java 统计字符串出现的次数

博客聚焦于Java统计一个字符串在另一个字符串中出现的次数。介绍了统计思路,包括将字符串转为char数组、定义相关变量、遍历比较等,还指出原代码错误并给出修正,最后将代码整理成工具类形式。

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

Java 统计一个字符串,在另一个字符串中出现的次数 Java 统计字符串出现的次数

 

一、统计某个字符串出现的次数 思路

    1、完整字符串和需要判断的字符串转为char数组

    2、定义3个变量:length 判断字符串长度:count ;计数:cur 判断的字符串下标。

    3、遍历完整字符串数组,逐个和需要判断的字符串比较

    4、若字符串相等,且 下标 = 判断的字符串长度,则找到一个字符串,计数+1;

          字符串相等,下标 != 判断字符串长度,找到部分字符串,下标+1

通过图解如下:

    4、代码实现如下:

@Test
	public void test3() {
		String str = "12311123123";  // 完整字符串
		String s = "123"; // 判断字符串
		char[] charArray = str.toCharArray(); 
		char[] charArray2 = s.toCharArray(); 
		int length = charArray2.length; // 需要判断的字符串长度
		int count = 0 ; // 计数
		int cur = 0 ; // 数组下标
		for (char c1 : charArray) {
			char c2 = charArray2[cur];
			if(c1 == c2) {
				if(cur == (length-1)) {
					count ++ ; // 找到一个字符串,计数+1
					cur = 0 ;
				}else {
					cur++; // 找到部分,下标+1
				}
			}
		}
		System.out.println("统计到字符串的个数:count333="+count);
	}

    5、上述代码有错误若字符串不相等,没有匹配到,应该将下标重置为0,cur=0;故正确的代码如下:

    @Test
	public void test3() {
		String str = "1231132323";  // 完整字符串
		String s = "123"; // 判断字符串
		char[] charArray = str.toCharArray(); 
		char[] charArray2 = s.toCharArray(); 
		int length = charArray2.length; // 需要判断的字符串长度
		int count = 0 ; // 计数
		int cur = 0 ; // 数组下标
		for(int x = 0 ; x < charArray.length ; x++) {
			char c1 = charArray[x];
			char c2 = charArray2[cur];
			if(c1 == c2) {
				if(cur == (length-1)) {
					count ++ ; // 找到一个字符串,计数+1
					cur = 0 ;
				}else {
					cur++; // 找到部分,下标+1
				}
			}else {
				 cur = 0 ; // 没找到,下标置为0
			}
		}
		System.out.println("统计到字符串的个数:count333="+count);
	}

     6、整理成,工具类的形式

    /**
	 * description: 统计一个字符串,在另一个字符串中出现的次数
	 * @param str  完整字符串
	 * @param s  判断字符串
	 * @return int
	 * @version v1.0
	 * @author w
	 * @date 2021年4月26日 下午2:28:37
	 */
	public static int count(String str , String s) {
		if(StringUtils.isBlank(str) || StringUtils.isBlank(s)) {
			return 0 ;
		}
		char[] charArray = str.toCharArray();
		char[] charArray2 = s.toCharArray();
		int count = 0 ;
		int cur = 0 ;
		int length = s.length();
		for (char c : charArray) {
			char c2 = charArray2[cur];
			if(c == c2) {
				if((cur+1) == length) {
					// 找到一个 count++ 
					count ++ ;
					cur = 0 ;
				}else {
					// 找到部分,cur++ ,继续判断下一个
					cur++ ;
				}
			}else {
				// 未匹配到,cur重置为0
				cur = 0 ;
			}
		}
		return count ;
	}

 

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值