zoukankan      html  css  js  c++  java
  • 字符统计

    题目描述

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

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

    输入描述:

    输入一串字符。

    输出描述:

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

    示例1

    输入

    复制
    aadddccddc
    

    输出

    dca

    思路:

    1.将字符串转换成字符数组。创建字符ascll码对应的整型数组,该数组长度必须大于128,字符的ascll码值就是该数组的下标,遍历字符数组,字符每出现一次对应ascll下标的整数就加一。
    2.找出该整型数组的最大值。
    3.在整型数组中匹配max,找到则将该整数下标对应的字符加入可变字符序列,max自减直至max为零。(本题无需考虑字符个数相同的情况,因为字符ascll码对应的整型数组本来就是排好的)

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    public class Main{
        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();
            //按数量从大到小添加到可变字符序列sb
            while(max!=0)
            {
                for(int i=0;i<chArray.length;i++)
                    if(chArray[i]==max)
                        sb.append((char)i);
                max--;
            }
            return sb;
        }
    }
  • 相关阅读:
    结构层HTML + 表现层CSS
    移动端:项目实战
    移动端:开发技巧
    两个对象数组,把其中相同的name的before相加,不同的对象添加到数组里
    js中遍历数组和遍历对象
    css学习笔记一
    Angular2父子组件数据传递之@ViewChild获取子组件详解
    css知识点总结
    js中的apply,call,arguments,callee,caller详解
    javascript中的排序
  • 原文地址:https://www.cnblogs.com/hisoka-study/p/13474411.html
Copyright © 2011-2022 走看看