算法(7)统计一个字符串中每个字符出现的次数

写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。

这博客是对自己学习的一点点总结及记录,如果您对 Java算法 感兴趣,可以关注我的动态,我们一起学习。

用知识改变命运,让我们的家人过上更好的生活

相关文章

点此查看 【算法系列】 博客文章


有关统计一个字符串中各个字符的个数是求职面试以及大学生竞赛常考的内容,这篇博文给出了两种实现方式,供大家参考!
例如 给定字符串 "helloworld" ,求出每个字符出现的次数

第一种方式:利用集合的方式

1.创建一个map容器,存储字符串中的字符以及字符出现的次数
2.遍历字符串,获取每一个字符,并将字符存到集合中
3.在存入集合的过程中要进行判断,如果集合中的key等于null,就将这个字符作为key,value为1进行存储;如果集合中包含这个key,则 value ++

public class StringTotal {
    public static void main(String[] args) {
        System.out.print("输入字符串:");
        String str = new Scanner(System.in).nextLine();
        
        if (str == null || "".equals(str.trim)) {
            System.out.println("字符串不能为空!");
            return;
        } else {
            // 创建一个map
            HashMap<Character, Integer> map = new HashMap<>();
            // 遍历字符串
            for (int i = 0; i < str.length(); i++) {
                char c = str.charAt(i);
                // 取字符对应的个数
                Integer count = map.get(c);
                if (count == null) {
                    map.put(c, 1);
                } else {
                    map.put(c, count + 1);
                }
            }
            System.out.println(map);
        }
    }
}

代码执行结果:

输入字符串:helloworld
{r=1, d=1, e=1, w=1, h=1, l=3, o=2}

第二种方式: 利用String 的方法

1.获取字符串第一个位置的字符
2.调用String的valueOf() 方法将获取的字符转化成字符串
3.调用String的replaceAll() 方法将字符串中与第2步得到的字符一样的全部替换为空,得到一个新的字符串
4.利用新的字符串长度减去原有字符串的长度,这个长度就是字符串字符的个数
5.将新的字符串赋值给原有的字符串,进行下一次循环

public class StringTotal1 {
    public static void main(String[] args) {
        System.out.print("输入字符串:");
        String str = new Scanner(System.in).nextLine();
        while (str.length() > 0) {
            // 获取字符串第一个位置的字符 c
            char c = str.charAt(0);
            // 将获取的字符转换成字符串 s
            String s = String.valueOf(c);
            //  将原来字符串中的字符串 s 全部替换为空,得到一个新的字符串
            String strNew = str.replaceAll(s, "");
            // 得到字符串中字符个数
            int count = str.length() - strNew.length();
            str = strNew;
            System.out.println(s+" 出现了 "+count+"次");
        }
    }
}

代码执行结果:

输入字符串:helloworld
h 出现了 1次
e 出现了 1次
l 出现了 3次
o 出现了 2次
w 出现了 1次
r 出现了 1次
d 出现了 1

上一篇 经典算法(6)斐波拉契数列、兔子繁殖、跳台阶算法
下一篇 算法(8)利用循环法和辗转相除法求 最大公约数和最小公倍数

  • 31
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值