猿问

如何计算字符串中字符的频率?

如何计算字符串中字符的频率?我需要编写某种循环来计算字符串中每个字母的频率。
例如:“aasjjikkk”将计为2'a',1'',2'j',1'i',3'k'。最终像这样的id最终会出现在一个地图中,其中字符为键,计数为值。有什么好主意怎么做?

繁星点点滴滴
浏览 533回答 3
3回答

慕斯王

您可以使用java Map并将a映射char到int。然后,您可以遍历字符串中的字符并检查它们是否已添加到地图中,如果有,则可以增加其值。例如:HashMap<Character,&nbsp;Integer>&nbsp;map&nbsp;=&nbsp;new&nbsp;HashMap<Character,&nbsp;Integer>();String&nbsp;s&nbsp;=&nbsp;"aasjjikkk";for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;s.length();&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;c&nbsp;=&nbsp;s.charAt(i); &nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;val&nbsp;=&nbsp;map.get(c); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(val&nbsp;!=&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(c,&nbsp;new&nbsp;Integer(val&nbsp;+&nbsp;1)); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(c,&nbsp;1); &nbsp;&nbsp;&nbsp;}}最后,您将计算您遇到的所有字符,并从中提取频率。或者,您可以使用Bozho使用Multiset的解决方案并计算总发生次数。

德玛西亚99

一个简洁的方法是:Map<Character,Integer>&nbsp;frequencies&nbsp;=&nbsp;new&nbsp;HashMap<>();for&nbsp;(char&nbsp;ch&nbsp;:&nbsp;input.toCharArray())&nbsp; &nbsp;&nbsp;&nbsp;frequencies.put(ch,&nbsp;frequencies.getOrDefault(ch,&nbsp;0)&nbsp;+&nbsp;1);我们使用for-each循环遍历每个角色。所述frequencies.getOrDefault()如果键存在或返回(默认)第二个参数得到的值。
随时随地看视频慕课网APP

相关分类

Java
我要回答