Java求一个字符串中,指定字符出现的次数,以及各个字符出现的次数。

 (1)统计指定字符出现的次数

思路:逐个比较指定字符与字符串中各个字符进行比较即可。

(2)统计各个字符出现的次数

思路:

1:提取字符串str的首个字符,然后将整个字符串str中与首个字符相同的字符,全部替换为空字符串 "" ,得到新字符串tempStr,得到两个字符串的长度差即可。

2:利用hash-map的 key唯一特性,逐个将字符串str里的字符 put,遇到相同的key,将其value值 +1。

import java.util.HashMap;
import java.util.Map;
public class TestCountChar
{
    public static void main(String [] args)
    {
        String str = "hello world";
        String s = "o";  //统计字符o出现的次数
        CountChar(str, s);

        CountChar1(str);
        CountChar2(str);

    }
    //统计字符串中指定字符出现的次数
    public static void CountChar(String str, String s)
    {
        int count = 0;
        for(int i=0; i<str.length(); i++)
        {
            //String.chatAt(i)返回的是字符,并非字符串
            if(s.equals(String.valueOf(str.charAt(i))))
            {
                count++;
            }     
        }
        System.out.println("字符 "+s+" 出现了"+count+"次");
    }

    //统计字符串中每个字符出现的次数
    public static void CountChar1(String str1)
    {
        int count = 0;
        while(str1.length()>0)
        {
            String c =String.valueOf(str1.charAt(0));  //将第一个字符变成字符串c
            String tempStr = str1.replaceAll(c, "");   //将字符串str1中,所有的字符串c 全都替换为空,原来的字符串长度将变短
            count = str1.length() - tempStr.length();
            str1 = tempStr;  //将新字符串复制给str1,执行下一次循环
            System.out.println(c +":"+count);
        }
    }
    //统计字符串中每个字符出现的次数,利用hash-map的key唯一特性
    public static void CountChar2(String str2)
    {
        Map<Character, Integer> map = new HashMap<>();
        for(int i=0; i<str2.length(); i++)
        {
            char c = str2.charAt(i);  //字符c
            if(map.containsKey(c))
            {
                map.put(c, map.get(c) + 1);  //如果已经存在,则 value值+1
            }
            else
            {
                map.put(c,1); //不存在,则放入的value值为1
            }
        }
        System.out.println(map);
    }

}

运行结果:

字符 o 出现了2次
h:1
e:1
l:3
o:2
 :1
w:1
r:1
d:1
{ =1, r=1, d=1, e=1, w=1, h=1, l=3, o=2}

 

  • 13
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值