计算每个唯一字符的出现次数
如何查找String中每个唯一字符的出现次数? 您最多可以使用一个循环。 请发布您的解决方案,谢谢。
由于这听起来像是一个家庭作业问题,让我们试着回顾一下如何手动解决这个问题。 一旦我们这样做,让我们看看我们如何尝试在代码中实现它。
需要做什么?
我们采用以下字符串:
it is nice and sunny today.
为了计算每个字符出现在上面字符串中的次数,我们应该:
- 迭代字符串的每个字符
- 记录字符串中每个字符出现的次数
我们将如何尝试呢?
手动执行此操作可能如下所示:
首先,我们找到一个新的characeter i
,所以我们可以在一张桌子中注意到i
说到目前为止i
出现了一次:
'i' -> 1
其次,我们找到另一个新的字符t
,所以我们可以在上表中添加:
'i' -> 1 't' -> 1
三,空间,再重复一次……
'i' -> 1 't' -> 1 ' ' -> 1
第四,我们遇到了恰好存在于表中的i
。 因此,我们要检索现有的计数,并将其替换为现有的计数+ 1:
'i' -> 2 't' -> 1 ' ' -> 1
等等。
如何翻译成代码?
将上面的内容翻译成代码,我们可能会写这样的东西:
- 对于字符串中的每个字符
- 检查是否已遇到该角色
- 如果不是,那么请记住新角色并说我们遇到过一次
- 如果是,则取其遇到的次数,并将其递增1
- 检查是否已遇到该角色
对于实现,正如其他人所提到的,使用循环和Map
可以实现所需。
循环 (例如for
或while
循环)可用于迭代字符串中的字符。
Map
(例如HashMap
)可用于跟踪角色出现的次数。 在这种情况下, 键将是字符, 值将是字符出现次数的计数。
祝你好运!
这是一个功课,所以不能发布代码,但这是一种方法:
- 迭代字符串,char by char。
- 将char放在hashmap键中并将其值初始化为1(count)。 现在,如果再次遇到char,请更新值(count + 1)。 否则将新char添加到key并再次设置其值(count = 1)
Here you go! I have done a rough program on Count occurrences of each unique character public class CountUniqueChars{ public static void main(String args[]){ HashMap map; ArrayList> list = new ArrayList>(); int i; int x = 0; Boolean fire = false; String str = "Hello world"; str = str.replaceAll("\\s", "").toLowerCase(); System.out.println(str.length()); for(i=0; i(); map.put(str.charAt(i), 1); list.add(map); }else{ map = new HashMap(); map.put(str.charAt(i), 1); fire = false; for (HashMap t : list){ if(t.containsKey(str.charAt(i)) == map.containsKey(str.charAt(i))){ x = list.indexOf(t); fire = true; map.put(str.charAt(i), t.get(str.charAt(i))+1); } } if(fire){ list.remove(x); } list.add(map); } } System.out.println(list); } }