yueyingyouhun
yueyingyouhun
采纳率0%
2017-03-12 12:18 阅读 3.7k

java字符串中字符个数计算

1.有一个字符串,例如 str="asddfg sssd adfe" 如何统计每个字符的个数
输出结果如:
a 2个
s 4个
d 4个
f 2个
g 1个
e 1个

 2.有一个字符串,例如 str="asddfg  sssd   adfe" 对字符串进行重排输出字符串“asddfgsssdadfe”
 注意:字符串中的空格不是一个而是多个。求方法(思想)。
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • u011665766 江户川小南 2017-03-12 12:46

    先转化成字符数组,然后遍历,定义一个map集合,将遍历的结果往里加,例如'a',第一次出现,key值为a,value为1,往后遇到重复出现的,value为getKey() + 1.

    点赞 1 评论 复制链接分享
  • qq_31244055 qq_31244055 2017-03-12 12:48
    1. 对于第一个吧,我不知道你是否需要去掉空格。 如果不需要的, 那么可以用Hashmap 来储存结果,因为Hashmap 的 key 在同一个hashmap 里是唯一性的,比如你有一个key 叫 "a", 那么这个hashmap 里就不能有另一个key 叫“a". 然后用for 来循环整个字组, 如果hashmap 里没有那个字母key 的存在,就添加进hashmap, 有的话,就加一。具体如下: String example = "asddfg sssd adfe"; HashMap map = new HashMap<>(); for (char item : example.toCharArray()) { if (map.containsKey(item)) { int val = map.get(item); map.put(item, val + 1); } else { map.put(item, 1); } } System.out.println(map);
    
    

    对于你的第二个问题,其实蛮简单的,用表达式把空格拿掉就好了, “\s+" 的意思就是去掉所有空格,不管是一个,两个。。。
    String example = "asddfg sssd adfe";
    example = example.replaceAll("\s+", "");
    System.out.println(example);

    
    

    如果你需要在统计前去掉空格,你就先用第二个的结果,去统计就好了。

    点赞 评论 复制链接分享
  • Mr_LeeHY Howie Lee 2017-03-12 13:09

    利用hashMap实现

    ```HashMap hm = new HashMap();
    char[] c = s.toCharArray();
    for(int i = 0; i<c.length;i++){
    if(hm.containsKey(c[i])){

                hm.put(c[i],hm.get(c[i])+1 );
            }else{
                hm.put(c[i], 1);
            }
        }
    
        for(Character key : hm.keySet()){
            System.out.println(key + " = " + hm.get(key));
        }
    
    
    
    点赞 评论 复制链接分享
  • blueair_ren 努力的人儿 2017-03-12 14:11

    class Test{

    String str = "asddfg sssd adfe";
    int strlength = str.length();
    int i = 0;
    
    int[] num = new int[26];
    char[] cht = new char[26];
    
    void Cal()
    {
        while(i<strlength)
        {
            char ch = str.charAt(i);
            if(ch>='a'&&ch<='z'){
                num[ch-'a']++;
                cht[ch-'a']=ch;
            }
    
            i++;
        }
        for(i=0;i<26 ;i++)
        {
            System.out.println("字符"+cht[i]+"=="+num[i]+"个");
        }
    }
    public static void main(String argv[])
    {
        Test test = new Test();
        test.Cal();
        System.out.println("hello world!");
    }
    

    }
    结果如下:
    图片说明

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2017-03-12 15:25
     import java.util.Scanner;  
    
    public class 统计字符 {  
        public static void main(String[] args) {  
    
            Scanner sc = new Scanner(System.in);  
            int[] a = new int[26];//数组存放对应26个字母的出现次数比如a[0]的值对应字母a出现的次数,a[2]的值对应c出现的次数。。。  
            System.out.println("请输入一串小写字符串");  
            String str=sc.nextLine();  
            str=str.trim().toLowerCase();//去掉前后空格并且全转为小写字母  
    
            //此for循环求各个字母出现的次数  
            for (int i = 0; i < str.length(); i++)  
            {  
                char c = str.charAt(i);//依次取出每个字母  
                int index=c-'a';//这样就可以得到每个字母对应的数组下标  
                a[index]=a[index]+1;//对应字母出现则存储字母的数组加1  
            }  
    
            //此for循环打印每个字母出现的次数,没有出现则不打印输出  
            for (int i = 0; i < a.length; i++)  
            {  
                if(a[i]!=0)//等于0相当于这个字母没出现就没必要打印  
                {  
                    System.out.println("字母"+(char)(i+'a')+"出现:"+a[i]+"次");  
                }  
            }  
        }  
    
    }  
    
    点赞 评论 复制链接分享

相关推荐