字符统计

  • 题目描述
  • 代码

题目描述

如果统计的个数相同,则按照ASCII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。

实现以下接口:
输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)
按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出
清空目前的统计结果,重新统计
调用者会保证:
输入的字符串以‘\0’结尾。

输入描述:

输入一串字符。

输出描述:

对字符中的各个英文字符(大小写分开统计),数字,空格进行统计,并按照统计个数由多到少输出,如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。

示例1:
输入:

aadddccddc

输出:

dca

代码

自己花了一小时写了个垃圾的代码,用的hashmap,没通过,于是去刷题解,题解大佬多,给出了各种通过的代码。
下面展示一些 内联代码片

import java.util.*;class Pair implements Comparable<Pair>{private int value;private int times;public Pair(int value, int times) {this.value = value;this.times = times;}public int compareTo(Pair that) {if (this.times == that.times) {return this.value - that.value;}return that.times - this.times;}public char get() {return (char)value;}
}public class Main {private final int N = 127;public Main() {}public String count(String str) {int[] arr = new int[N];for (char ch : str.toCharArray()) {if (ch >= N) continue;arr[ch]++;}PriorityQueue<Pair> pq = new PriorityQueue<>();for (int i = 0; i < N; i++) {if (arr[i] != 0) { pq.offer(new Pair(i, arr[i]));}}StringBuilder res = new StringBuilder();while (!pq.isEmpty()) {res.append(pq.poll().get());}return res.toString();}public static void main(String[] args) {Main solution = new Main();Scanner in = new Scanner(System.in);while (in.hasNextLine()) {String str = in.nextLine();String res = solution.count(str);System.out.println(res);}}
}

还有一个代码,

package HuaWei;//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStreamReader;
//import java.util.*;
//public class zifuchuantongji102 {//
//    public static void main(String[] args) {//        Scanner sc = new Scanner(System.in);
//        String s = sc.nextLine();
//
//        System.out.println(robot(s));
//
//    }
//
//    public static String robot(String ss){//
//        int m = ss.length();
//        String sss;
//        Map<Character,Integer> map = new HashMap<Character,Integer>();
//        List<Map.Entry<Character,Integer>> list = new ArrayList<>();
//
//        int i=0;
//        while(i<m){//            map.put(ss.charAt(i),map.getOrDefault(ss.charAt(i),0)+1);
//            i++;
//        }
//
//        for(Map.Entry<Character,Integer> entry:map.entrySet()){//            list.add(entry);
//        }
//
//        list.sort(new Comparator<Map.Entry<Character, Integer>>(){//            @Override
//            public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {//                return o1.getValue()-o2.getValue();
//            }
//        });
//
//        StringBuilder sb = new StringBuilder();
//        for (Character key : map.keySet()) {//            sb.append(key);
//        }
//        sss=sb.toString();
//
//        String reverse = new StringBuffer(sss).reverse().toString();
//
//        return reverse;
//
//    }
//}import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class zifuchuantongji102{public static void main(String[] args){BufferedReader br=new BufferedReader(new InputStreamReader(System.in));String str;try{while((str=br.readLine())!=null){System.out.println(count(str).toString());}}catch(IOException e){e.printStackTrace();}}public static StringBuilder count(String str){char[] strArray=str.toCharArray();int[] chArray=new int[129];//字符对应ascll码值下标元素自增来统计数量for(char i:strArray)chArray[(int)i]++;int max=0;//找出字符数量最多的ascll码值for(int i=0;i<chArray.length;i++)if(max<chArray[i])max=chArray[i];StringBuilder sb=new StringBuilder();//按数量从大到小添加到可变字符序列sbwhile(max!=0){for(int i=0;i<chArray.length;i++)if(chArray[i]==max)sb.append((char)i);max--;}return sb;}
}

【小白的刷题之路】字符统计相关推荐

  1. 【Leetcode】刷题之路2(python)

    哈希映射类题目(简单题小试牛刀啦bhn) 242.有效的字母异位词 349.两个数组的交集 1002.查找常用字符 202.快乐数 383.赎金信 242. 有效的字母异位词 用python的Coun ...

  2. 判断输入的字符串是否为回文_刷题之路(九)--判断数字是否回文

    Palindrome Number 问题简介:判断输入数字是否是回文,不是返回0,负数返回0 举例: 1: 输入: 121 输出: true 2: 输入: -121 输出: false 解释: 回文为 ...

  3. 刷题之路:DP思想(动态规划)

    dp一般用于解决决策问题,比如说你的每一步都有好几种处理方式,怎么选择使得最后的结果满足或者接近于你的预期是需要考虑的问题. 所以dp问题实际上也就是最优解的问题 一般采用的方式就是将问题拆分成若干个 ...

  4. LeetCode 刷题之路(python版)

    摘自:https://blog.csdn.net/qq_32384313/article/details/90745354 LeetCode 刷题之路(python版) 小坏wz 2019-06-02 ...

  5. 【Leetcode】 刷题之路1(python)

    leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类. 1.两数之和 15.三数之和 16.最接近的三数之和 11.盛最多的水 18.四数之和 454.四数相加II ...

  6. 2021.5.21开始的兔系刷题之路 根据LeetCode分类进行逐个击破 培养出自己的套路~

    十二月了 再更一波 最近的题解都写在这个仓库中,另外仓库中也记录了自己学习前端过程中的收获~ 近期刷题情况-- 2021-11突然好多人看这篇XD 来更一波,依旧在保持刷题啦~ 目前是跟着一本前端算法 ...

  7. 蓝桥杯备考-刷题之路-动态规划算法(DP算法)Part1

    之前在刷力扣的时候就是浑浑噩噩的,照着评论区的答案写了一遍就万事大吉了,没有深度思考过.这次备考蓝桥杯看到DP算法的第一道题就不会,更难受的是看答案了依然完全不理解,所以决心把DP算法一次弄懂. 开始 ...

  8. 【Shell牛客刷题系列】SHELL1 统计文件的行数:学习wc命令和文本三剑客awk、grep、sed命令

    该系列是基于牛客Shell题库,针对具体题目进行查漏补缺,学习相应的命令. 刷题链接:牛客题霸-Shell篇. 该系列文章都放到专栏下,专栏链接为:<专栏:Linux>.欢迎关注专栏~ 本 ...

  9. Python刷题之路,怎样做才能让技术突飞猛进

    比你优秀的人比你还努力 这个世界最可悲的就是 , 比你优秀的人比你还努力 偶然的机会,通过Python认识了一位华为的文职工作人员.起初只是问我,Python初学者看什么书能快速入门.而两个月过后,她 ...

最新文章

  1. axt测试软件,【测试工具】这些APP实用测试工具,不知道你就out了!
  2. 注册中心 Eureka 源码解析 —— 应用实例注册发现(五)之过期
  3. Java8 lambda表达式10个示例
  4. java例程练习(批量修改文件后缀名)
  5. 而立之年,不拼体力的我们应该关注什么?
  6. php如何设计一个网站,如何设计一个优质的外贸网站?
  7. Ubuntu14.04开启wifi热点(亲测有效)
  8. 【Webcam设计】利用底层V4L2+OPENCV进行图像处理以及移植策略
  9. django微信公众号开发入门详细指南
  10. 深入理解多线程(四)—— Moniter的实现原理
  11. 修改无线网密码后服务器拒绝访问,路由器重设密码怎么上不了网
  12. 自定义照相机官方指南
  13. the计算机科学全球大学排名,2020THE计算机科学专业排名发布,内地60所大学入榜,清华全球15...
  14. el-date-picker修改为周类型日期插件时间格式是开始时间字段级和结束时间字段两个传参给后台
  15. dreamweaver排列顺序怎么用_Dreamweaver使用技巧
  16. 高级电子技能及生产工艺流水线实训台QY-GY01A
  17. 微信小程序 模块化设计
  18. 投资理财那些事-资产配置
  19. Azkaban与Oozie详细对比
  20. 偏微分符号 ∂ 的说明

热门文章

  1. 安装ipython(一分钟读懂)
  2. python大作业数独_python做一个数独小游戏
  3. Linux没有分区会怎样吗,Linux没有扩展分区。()
  4. 仿苹果涂鸦软件_有没有仿ios12备忘录便签软件?
  5. Typora、github中的markdown不同的行间距
  6. Pycharm 和 Vs code 字体大小调整(Ctrl + 鼠标滚轮实现)
  7. 201912-4 区块链(CCF CSP认证)
  8. python中出现iterator should return strings, not bytes怎么解决
  9. java中的全等和相似
  10. MyEclipse9 导入ExtJs校验报错的处理办法