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

Java 专栏收录该内容
122 篇文章 1 订阅

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 ;
	}

 

 

  • 0
    点赞
  • 4
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页

打赏

HaHa_Sir

讨饭啦!

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值