计算每个唯一字符的出现次数

如何查找String中每个唯一字符的出现次数? 您最多可以使用一个循环。 请发布您的解决方案,谢谢。

由于这听起来像是一个家庭作业问题,让我们试着回顾一下如何手动解决这个问题。 一旦我们这样做,让我们看看我们如何尝试在代码中实现它。

需要做什么?

我们采用以下字符串:

it is nice and sunny today. 

为了计算每个字符出现在上面字符串中的次数,我们应该:

  1. 迭代字符串的每个字符
  2. 记录字符串中每个字符出现的次数

我们将如何尝试呢?

手动执行此操作可能如下所示:

首先,我们找到一个新的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可以实现所需。

循环 (例如forwhile循环)可用于迭代字符串中的字符。

Map (例如HashMap )可用于跟踪角色出现的次数。 在这种情况下, 将是字符, 将是字符出现次数的计数。

祝你好运!

这是一个功课,所以不能发布代码,但这是一种方法:

  1. 迭代字符串,char by char。
  2. 将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); } }