获取该字符串中,每一个字母出现的次数,要求打印结果是a(1)b(2)...

public class MapTest1 {

	/**
	 * "gj3do=asdf8uidfgh_xsd"获取该字符串中,每一个字母出现的次数
	 * 要求打印结果是a(1)b(2)...
	 * 1.将字符串变成字符数组
	 * 2.遍历数组,将数组中的每一个元素取出
	 * 3.判断取出的元素作为键,是否在map集合中,如果没有存在,就将该元素作为键,1作为值,存入集合
	 * 4.如果存在,就将该元素对应的值取出,再将该元素最为键,取出的值加1作为值,存入集合
	 * 5.用stringbuilder容器,将集合中的字符对象,按照要求存入该容器,并打印
	 */
	public static void main(String[] args) {
		String s="g3do=asfdfa8udfg_xxsd";
		s=getCharCount(s);
		System.out.println(s);
	}

	public static String getCharCount(String s) {
		Map<Character,Integer> mp=new TreeMap<Character,Integer>();
		//将字符串变成字符数组
		char[] chs=s.toCharArray();
		//遍历数组,将数组中的每一个元素取出
		for (int i = 0; i < chs.length; i++) {
			if(chs[i]<'a'||chs[i]>'z')
				continue;
			//判断取出的元素作为键,是否在map集合中
			Integer value=mp.get(chs[i]);
			if(value==null){
				mp.put(chs[i], 1);
			}
			else{
				mp.put(chs[i],value+1);
			}	
			
			
		}
		return myString(mp);
	}

	private static String myString(Map<Character, Integer> mp) {
		//用stringbuilder容器
		StringBuilder sb=new StringBuilder();
		Iterator<Map.Entry<Character,Integer>> it=mp.entrySet().iterator();
		while(it.hasNext()){
			Map.Entry<Character,Integer> me=it.next();
			Character key=me.getKey();
			Integer value=me.getValue();
			sb.append(key+"("+value+")"+" ");
		}
		
		return sb.toString();
	}
	
}

统计字符串中每个字符出现的次数有多种方法,以下为你详细介绍不同编程语言的实现方式: ### Java 实现 可以使用 `HashMap` 来存储字符及其出现的次数。通过遍历字符串,判断字符是否已存在于 `HashMap` 中,若存在则将对应的值加 1,若不存在则将字符存入并将值初始化为 1。 ```java import java.util.HashMap; import java.util.Scanner; public class Demostring { public static void main(String[] args) { System.out.println("请输入一个字符:"); // 要有一个字符串 String line = new Scanner(System.in).nextLine(); // 处理字符 findChar(line); } private static void findChar(String line) { // 创建一个map集合,键来表示字符,值表示次数 HashMap<Character, Integer> map = new HashMap<>(); // 遍历字符串得到每个字符 for (int i = 0; i < line.length(); i++) { char c = line.charAt(i); // 判断map集合里面有没有这个字符 if (!map.containsKey(c)) { // 没有,把这个元素添加进去,然后直接次数加一 map.put(c, 1); } else { // 有 获取次数,之前的次数 Integer count = map.get(c); map.put(c, ++count); } } System.out.println(map); } } ``` 上述代码首先提示用户输入一个字符串,然后调用 `findChar` 方法统计每个字符的出现次数,最后打印出存储字符及其出现次数的 `HashMap` [^1]。 ### Java 另一种实现(利用 ASCII 码) 由于每个字母都有对应的 ASCII 码,可以创建长度为 26 的数组来统计小写字母的出现次数。 ```java public class Demo01 { public static void main(String[] args) { // 统计字符在字符串中出现的次数; String str = "qwerqqqqqqweqweeeewqq"; // 由于每个字母都有着对应的ascll码;创建长度为26的数组; int[] counts = new int[26]; // 对字符串进行遍历; for (int i = 0; i < str.length(); i++) { // charAt:根据索引寻找字符 char c = str.charAt(i); // 让拿到的每个字母;去减第一个字母的值;(实际上有隐式的ascll码相减); // 减出来的值就相当于拿到一次;每减一次就加一次,最终会把叠加的次数计入数组; counts[c - 'a']++; } // 遍历数组; for (int array : counts) { System.out.print(array + " "); } } } ``` 此代码通过将字符的 ASCII 码与 `'a'` 的 ASCII 码相减,得到数组的索引,将对应索引的值加 1,最后遍历数组输出每个字母的出现次数 [^2]。 ### JavaScript 实现 可以使用循环判断字符串每个字符在原字符串中出现的次数,并用计数器进行记录。 ```javascript var str = 'abcabcabcdee'; var newStr = 'abcde'; for (var a = 0; a < newStr.length; a++) { var k = 0; // 定义计数器,用于统计当前str[a]的次数 for (var b = 0; b < str.length; b++) { if (newStr[a] === str[b]) { k++; } } console.log(newStr[a] + '出现了' + k + '次'); } ``` 上述代码通过两层循环,外层循环遍历去重后的字符串,内层循环遍历原字符串,统计每个字符的出现次数打印结果 [^3]。 ### Python 实现 可以使用字典来统计每个字符的出现次数。 ```python import string import random x = string.ascii_letters + string.digits + string.punctuation # 构造字母+数字+标点符号的字符串集合 y = [random.choice(x) for i in range(1000)] # 随机产生一个具有1000个元素的列表 z = ''.join(y) # 将列表转换成字符串 Count_Dict = dict() # 构造一个空的字典 for i in z: # 遍历每一个字符 Count_Dict[i] = Count_Dict.get(i, 0) + 1 # 将每一个字符作为字典的键,将出现次数作为值,依次累加,首次出现为0+1。 print(Count_Dict) # 打印结果 ``` 此代码先构造一个包含字母、数字和标点符号的字符串集合,随机生成一个长度为 1000 的字符串,然后遍历字符串,使用字典的 `get` 方法统计每个字符的出现次数,最后打印字典 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值