统计字符串中各个字符出现的次数(六)

东家蝴蝶西家飞,白骑少年今日归。 愿,所有迷茫的人,都不再迷茫的,愿,所有努力工作的人,都可以得到应有的回报,愿,所有的人,都可以找到回家的方向,愿,再无苦痛,再无离别。

上一章简单介绍了字符串转换成数据库in语句的形式(五),如果没有看过,请观看上一章

一. 统计字符出现的次数

有一个长字符串,里面有多个不同的字符,统计一下各个字符出现的次数。有很多种方法来实现,可以用一种新的方式去处理,用Map 的方式。 统计时,最好可以按照字母的顺序进行相应的排序,所以可以使用TreeMap 的方式。 利用Map,可以减少空间复杂度。

二. 处理代码

public static String showCount(String str){
		//1.将字符串转换成相应的字符数组 。 用TreeMap进行相应的接收。
		char[] charArr=str.toCharArray();
		// 用包装类。
		Map<Character,Integer> map=new TreeMap<Character,Integer>();
		for (char c : charArr) {  //对每一个字符进行相关的判断。
			//2. 对传入的字符进行判断。如果不是a-z或者A-Z 就不判断。
			if(!(c>='a'&&c<='z'||c>='A'&&c<='Z')){
				continue;
			}
			//3.是的话,就从map中判断,看是否能够取出。
			Integer count=map.get(c); //看数目。
			if(count==null){  //即没有取出来,设置数目为1.
				map.put(c,1);
			}else{
				map.put(c,count+1); // 为原来的数目+1
			}
		}
		return mapToString(map);
	}

三. Map 转换成String 字符串的方法

//将Map转换成相对应的字符串进行输出。
	public static String mapToString(Map<Character,Integer> map){
		StringBuilder sb=new StringBuilder();
		//需要遍历一下这个map.
		for (Map.Entry<Character, Integer> m: map.entrySet()) {
			sb.append(m.getKey()+"("+m.getValue()+")");
		}
		return sb.toString();
	}

四. 代码

public class StringTest3 {
	public static void main(String[] args) {
		String string="adsfahlkj;asdf;sal124+asfdbclsdmnqoqweprqwklhsdf;sdlanzm,nxcwerqabcdefghijklmnopqrstuvwxyz";
		System.out.println("展示值:"+showCount(string));
	}
	public static String showCount(String str){
		//1.将字符串转换成相应的字符数组 。 用TreeMap进行相应的接收。
		char[] charArr=str.toCharArray();
		Map<Character,Integer> map=new TreeMap<Character,Integer>();
		for (char c : charArr) {  //对每一个字符进行相关的判断。
			//2. 对传入的字符进行判断。如果不是a-z或者A-Z 就不判断。
			if(!(c>='a'&&c<='z'||c>='A'&&c<='Z')){
				continue;
			}
			//3.是的话,就从map中判断,看是否能够取出。
			Integer count=map.get(c); //看数目。
			if(count==null){  //即没有取出来。
				map.put(c,1);
			}else{
				map.put(c,count+1);
			}
		}
		return mapToString(map);
	}
	//将Map转换成相对应的字符串进行输出。
	public static String mapToString(Map<Character,Integer> map){
		StringBuilder sb=new StringBuilder();
		//需要遍历一下这个map.
		for (Map.Entry<Character, Integer> m: map.entrySet()) {
			sb.append(m.getKey()+"("+m.getValue()+")");
		}
		return sb.toString();
	}
}

控制台输出结果为:

展示值:a(7)b(2)c(3)d(7)e(3)f(5)g(1)h(3)i(1)j(2)k(3)l(6)m(3)n(4)o(2)p(2)q(5)r(3)s(8)t(1)u(1)v(1)w(4)x(2)y(1)z(2)

谢谢!!!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两个蝴蝶飞

你的鼓励,是老蝴蝶更努力写作的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值