我是靠谱客的博主 风趣薯片,最近开发中收集的这篇文章主要介绍451. Sort Characters By Frequency【力扣】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题意理解

将字符串按频率从大到小输出

问题分析

用hash表,然后选择排序

用一个数组存放字符串中的字符和出现的频率。然后从这个数组中每次选择一个最大的数出来,按频率输出,然后将其频率置为0,直到数组没有字符串字母。

其他

看到另一个高分解法,用map+vector来做,思路是map保存字符串字符和频率对信息。vector的元素是字符串(每种字符重复出现的字符串),元素的下标以字符出现的数量为准。然后倒着输出就可以。

链接

https://leetcode-cn.com/submissions/detail/14719631/

    string frequencySort(string s) {
        string result;
        int dict[128] = {0};
        for(int i = 0; i < s.size(); i ++)
        {  
            dict[s[i]]++; 
        }
        for(int i = 0; i < 128; i ++)   //每次找一个最大值
        {
            int maxIndex = 0;   //记录最大的索引
            for(int j = 0; j < 128; j ++)   //每次在字典里遍历一遍
            {    
                if (dict[j] > dict[maxIndex])
                {   
                    maxIndex = j;
                }
            }  
            if (maxIndex != 0)
            {
                while(dict[maxIndex]--)
                {
                    result.push_back(maxIndex);
                }
            }
        }

        
        cout << result << endl;            
        
        return result;
    }

 

最后

以上就是风趣薯片为你收集整理的451. Sort Characters By Frequency【力扣】的全部内容,希望文章能够帮你解决451. Sort Characters By Frequency【力扣】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部