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

Java 统计每个唯一字符的出现次数,java,string,Java,String,如何找到字符串中每个唯一字符的出现次数?最多可以使用一个循环。请发布您的解决方案,谢谢。这是一个家庭作业,因此无法发布代码,但这里有一种方法: 逐字符遍历字符串 将char放入hashmap键中,并将其值初始化为1(count)。现在,如果再次遇到char,则更新该值(count+1)。否则,将新字符添加到键并再次设置其值(计数=1) 因为这听起来像是一个家庭作业问题,让我们试着复习一下如何手工解决这个问题。一旦我们这样做了,让我们看看如何在代码中实现它 需要做什么? 让我们使用以下字符串: i

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

这是一个家庭作业,因此无法发布代码,但这里有一种方法:

  • 逐字符遍历字符串
  • 将char放入hashmap键中,并将其值初始化为1(count)。现在,如果再次遇到char,则更新该值(count+1)。否则,将新字符添加到键并再次设置其值(计数=1)

  • 因为这听起来像是一个家庭作业问题,让我们试着复习一下如何手工解决这个问题。一旦我们这样做了,让我们看看如何在代码中实现它

    需要做什么?

    让我们使用以下字符串:

    it is nice and sunny today.
    
    为了计算每个字符在上述字符串中出现的次数,我们应该:

  • 迭代字符串的每个字符
  • 记录字符串中每个字符出现的次数
  • 我们实际上如何尝试它?

    手工操作可能是这样的:

    首先,我们发现一个新的字符
    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
    )可用于跟踪字符出现的次数。在这种情况下,键将是字符,值将是字符出现次数的计数

    祝你好运

    给你!我做了一个粗略的程序,计算每个独特字符的出现次数
    
    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<Character, Integer> map;        
            ArrayList<HashMap<Character, Integer>> list = new ArrayList<HashMap<Character,Integer>>();
            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<str.length() ; i++){
                if(list.size() <= 0){
                    map = new HashMap<Character, Integer>();
                    map.put(str.charAt(i), 1);
                    list.add(map);
                }else{              
                    map = new HashMap<Character, Integer>();
                    map.put(str.charAt(i), 1);
    
                    fire = false;
    
                    for (HashMap<Character, Integer> 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);       
        }
    }
    
    公共类CountUniqueChars{ 公共静态void main(字符串参数[]){ HashMap图; ArrayList=新建ArrayList(); int i; int x=0; 布尔火=假; String str=“Hello world”; str=str.replaceAll(“\\s”,”).toLowerCase(); System.out.println(str.length());
    对于(i=0;iHomework?向我们展示你做了什么。如何找到你已经做了什么?你可以先尝试解决自己的问题,然后就你遇到的问题提问。请发布你所做的,谢谢。@Bert F我的解决方案类似于@zengr,我想知道是否有更好的方法,所以我将问题发布在这里。谢谢!)(确认,15个字符的过滤器…)谢谢你的好话:)谢谢:-),这实际上是我几天前回答的一个面试问题,你的答案和我的类似。我把这个问题贴在这里,因为我想知道其他程序员对此的想法。我想hashmap是这个问题的最佳答案。