题解 | #字符统计#

字符统计

https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0

这道题比较重要, 所以做一下笔记
题目的要求就是从大到小的稳定排序
所以定一个二维数组, 第一列表示各个字符的下标, 第二列表示各个字符的个数
然后调用arrays.sort()方法实现稳定排序

import java.util.Scanner;
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext())
        { // 注意 while 处理多个 case
            String str = in.nextLine();
            int [][]arr = new int[36][2];

            for (int i = 0; i < 36; i++)
            {
                arr[i][0] = i;
                arr[i][1] = 0;
            }

            for (int i = 0; i < str.length() ; i++)
            {
                char ch = str.charAt(i);
                if(Character.isLetter(ch))
                {
                    int index = ch - 'a'+10;
                    arr[index][1]++;
                }
                else
                {
                    int index = ch - '0';
                    arr[index][1]++;
                }

            }
            Arrays.sort(arr, new Comparator<int[]>()
            {
                @Override
                public int compare(int[] o1, int[] o2)
                {
                    return o2[1] - o1[1];
                }
            });


            for (int i = 0; i < 36; i++)
            {
                if(arr[i][1] != 0)
                {
                    int index = arr[i][0];
                    if( index <10 )
                    {
                        int k = arr[i][0] +'0';
                        char ch = (char) (  k) ;
                        System.out.print(ch);
                    }
                    else
                    {
                        int k = arr[i][0] +'a'-10;
                        char ch = (char) (  k) ;
                        System.out.print(ch);
                    }

                }
            }

        }
    }
}

华为机试题解 文章被收录于专栏

华为机试题解

全部评论

相关推荐

joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务