Java统计中的计数方法

这里介绍两种计数方法:一种是采用HashMap来计数,另一种计数是针对26个字母的计数方法。

  1. 方法一:使用hashMap,它的map.put(xx,map.getOrDefault(a[i],0)+1)==>实现计数;在通过它的key,获得它的value值
    1. 代码:

          public static void main(String[] args) {
              // TODO Auto-generated method stub
              Scanner scanner=new Scanner(System.in);
              String s=scanner.next();
              char a[]=s.toCharArray();//把字符串转换成字符数组
              HashMap<Character, Integer>map=new HashMap<Character, Integer>();
              for(int i=0;i<a.length;i++) {
                  map.put(a[i], map.getOrDefault(a[i],0)+1);//如果map.get(x)x不在就会报错,getOrDefault(c,0)如果没有就返回0,不会报错,如果存在就加1==就统计数了
              }
              List<Character>list=new ArrayList<Character>();
              //遍历hashmap
              int max=0;
              for(char key:map.keySet()) {//keyset里面存放map的所有key
                  int x=map.get(key);//通过key取map的值
                  if(x>max) {
                      list.clear();//清空集合
                      list.add(key);
                      max=x;
                  }else if(x==max) {
                      list.add(key);
                  }
              }
              for(char c:list) {
                  System.out.print(c);
              }
      //        System.out.println(map.toString());

          }

    2. 方法二:适用于26个字母的统计

     

    1. 首先:把获得的字符串遍历,得到字符

         代码:for(int i=0;i<s1.length();i++){

                char c=s1.chartAt(i);

               }

        2放入到数组中去:开辟一个长度为26的数组,思想就是,字符减去a得到一个数就是数组的下   标。Eg:a-”a”=0,因为ascall值

         代码:sm[c-”a”]++;实现存入和计数。

  2. 列子:

  3. 代码:

        static int[]ms=new int[26];
        static int[] mt=new int[26];

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner scanner=new Scanner(System.in);
            String s1=scanner.next();
            String s2=scanner.next();
            for(int i=0;i<s1.length();i++){
                char c=s1.charAt(i);
                ms[c-'a']++;
            }
            for(int i=0;i<s2.length();i++){
                char b=s2.charAt(i);
                mt[b-'a']++;
            }
            for(int i=0;i<26;i++) {
                if(ms[i]<mt[i]) {
                    System.out.println("NO");
                    return;
                }
            }
            System.out.println("YES");
            

        }

     

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值