python3__leecode/0451.根据字符出现频率排序

【排序】leetcode--第451题--根据字符出现频率排序--(python版) 题目描述 给定一个字符串,请将字符串里的字符按照出现的频率降序排列 示例 : 输入: “tree” 输出: “eert” 解释: 'e’出现两次,'r’和’t’都只出现一次。 因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。 解题思路 按照字符出现的频数进行排序,频数统计使用字典储存,可以考虑使用以下三种方法求解: (1) 调用python自带的sort函数,对字符频数进行排序 (2) 利用桶排序,将字符频数相同的字符放进一个桶里,按频数大小,依次将桶里数据读取出来 阅读详情

一、刷题内容

原题链接

https://leetcode-cn.com/problems/sort-characters-by-frequency/

内容描述

给定一个字符串,请将字符串里的字符按照出现的频率降序排列。

示例 1:
输入:
“tree”
输出:
“eert”

解释:
'e’出现两次,'r’和’t’都只出现一次。
因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。

示例 2:
输入:
“cccaaa”
输出:
“cccaaa”

解释:
'c’和’a’都出现三次。此外,"aaaccc"也是有效的答案。
注意"cacaca"是不正确的,因为相同的字母必须放在一起。

示例 3:
输入:
“Aabb”
输出:
“bbAa”

解释:
此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。
注意’A’和’a’被认为是两种不同的字符。

二、解题方法

1.方法一:Counter排序

lambda函数(匿名函数)

class Solution:
    def frequencySort(self, s: str) -> str:
        li=[]
        for i,j in Counter(s).items():
            li.append([i,j])
        new_li=sorted(li,key=lambda x:-x[1])
        return ''.join([i*j for i,j in new_li])

2.方法二:一行代码

class Solution:
    def frequencySort(self, s: str) -> str:
        return ''.join([i*j for i,j in sorted([[i,j] for i,j in Counter(s).items()],key=lambda x: -x[1])])

3.方法三:

class Solution:
    def frequencySort(self, s: str) -> str:
        hashmap = dict()
        ret = ''
        # 构建一个哈希表,记录频次:hashmap【‘a’】=2
        for c in s:
            if not c in hashmap: hashmap[c] = 1
            else: hashmap[c] += 1
        
        # 反向哈希表,hashmap【2】=【‘a’,‘c’】
        ivt = collections.defaultdict(list)
        for k,v in hashmap.items():
            ivt[v].append(k)

        # 频率排序
        cnt = sorted([k for k,v in ivt.items()])[::-1]

        # 输出
        for i in cnt:
            for j in ivt[i]:
                ret += j*i
        return ret
按出现频率/出现频次 从高到低排序,Python算法,人工智能常用,不用import第三方库的方法 使用python的过程中,当我们提取一些关键字词组成集合的时候,往往是杂乱无章的,这时候我们经常需要按照关键字出现的频率从高到低排列。 今天突然想着练练手,上来写点什么,就写一个不依赖第三方库的方法来排序吧,算法仅是实现列表,不需要安装其他库的(后面有个小作业哈,大家可以试一试自己的动手实操能力哦) # python 算法如下: deffrequency_sort(items): # 用的是items,输入列表,则一个一个元素处理,输入字符串,则一个个字符处理 #yourcodeh... 阅读详情

相关推荐

python统计文本字符串里单词出现频率的方法

主要介绍了python统计文本字符串里单词出现频率的方法,涉及Python字符串操作的相关技巧,需要的朋友可以参考下

python Counter排序~

1、counter排序: c=collections.Counter(s) cc=sorted(c.items(),key=lambda x:x[1],reverse=True) //按照值从大到小排序 key=lambada:匿名函数 x:x【1】取第二列数据

(ง •_•)ง没有困难的工作,只有勇敢的狗狗 8135

立创·庐山派-K230-CanMV(嘉楠勘智)开发板通过ATK-ESP8266实现图像识别数据无线传输至原子云

本文详细介绍了如何使用立创·庐山派-K230-CanMV开发板,通过ATK-ESP8266 WIFI模块实现图像识别数据的无线传输至原子云平台。内容包括硬件连接、软件环境搭建、AT指令控制、原子云连接及数据上传的全过程,并提供了实用的调试技巧和常见问题解决方案,为物联网应用开发提供了完整实践指南。

potato的博客 743

python 对字符串按字符出现次数排序,出现次数相同按字母排序

python 对字符串按字符出现次数排序,出现次数相同按字母排序

mongo2020的博客 1635

半导体EAP系统入门指南:从零开始理解设备自动化程序(附实战案例)

本文深入浅出地介绍了半导体制造中EAP(设备自动化程序)系统的核心作用与工作原理。EAP作为连接MES与生产设备的桥梁,负责指令翻译、数据采集与实时控制,是实现晶圆厂全自动化的关键。文章通过对比手动与自动模式,阐述了EAP在提升效率、保障良率方面的价值,并提供了一个实战案例,帮助读者从零构建对半导体CIM体系中这一关键组件的理解。

weixin_29200741的博客 736

24位ADC的精度陷阱:为什么你的ADS1232实测性能不达标?

本文深入探讨了24位ADC芯片ADS1232在实际应用中性能不达标的原因,揭示了高精度ADC性能依赖周边电路设计的关键问题。通过分析电源系统、参考电压稳定性、PCB布局等常见陷阱,提供了优化方案和调试技巧,帮助工程师充分发挥ADS1232的潜力,实现接近理论值的测量精度。

weixin_28285943的博客 407

根据字符出现频率排序Python解法

链接:https://leetcode.cn/problems/sort-characters-by-frequency。给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序。一个字符出现的 频率 是它出现在字符串中的次数。对字符串进行遍历,对每个字符出现的次数进行记录,然后按照次数进行降序排列,最后对排序过的字符串遍历输出即可。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。解释: 'e'出现两次,'r'和't'都只出现一次。来源:力扣(LeetCode)

皮_客的博客 1135

全局子程序 参数调用

为什么要子程序: 为了实现程序结构化,我们尽量使用不同功能的功能块来实现一些特定的功能, 子程序接口: 使用过程的注意事项,尤其是数组使用时的注意事项 从一个主程序中可以将参数传递到局部或全局子程序和函数中。 怎样传递参数有 2 种方式: 作为 IN 参数 变量值在主程序中保持不变。 这种传递方式也称为“ 值传递 (Call by Value)”。 作为 OUT 参数 子程序读取并更改该值,然后将新值写回到主程序中。 这种传递方式也称为“Call by Reference”。 举例说明 1 DEF MY

Eric_Yang1024的博客 1095

Python--统计字符串每个字符出现的次数,并按出现次数从小到大排序打印出来

基本语法格式:sorted(iterable, cmp=None, key=None, reverse=False)1、循环遍历列表或字符串,如果不在则创建(key,value),如果字符在字典中则值加1。该函数的作用是获取对象的某个/些维度的数据,默认将对象的维度看为1维。2、operator.itemgetter函数。2、再用sorted函数排序。......

yuan_ahui的博客 8362

IKM 测试题 - Java SE 8 评估测试题目

IKM 测试题 - Java SE 8 评估测试题目

licheng11y的博客 1315

IEEE Access投稿全流程:从LaTeX模板到Overleaf实战(附避坑指南)

本文详细解析了向IEEE Access期刊投稿的完整流程,重点介绍了如何使用LaTeX模板在Overleaf平台上高效撰写和格式化论文。内容涵盖模板选择、作者信息填写、公式图表排版、参考文献管理(BibTeX)以及投稿前的最终检查清单,旨在帮助研究者,尤其是LaTeX新手,规避常见技术问题,顺利完成符合期刊严格要求的稿件提交。

open4的博客 576

LeetCode | 0451. Sort Characters By Frequency根据字符出现频率排序【Python】

LeetCode 0451. Sort Characters By Frequency根据字符出现频率排序【Medium】【Python】【桶排序】 Problem LeetCode Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: "tree"...

Wonz 640

【深度学习新浪潮】深度学习特别是大模型在图像配准方面的研发进展

深度学习,尤其是大模型的出现,彻底改变了图像配准的技术范式——从“手工设计特征+几何约束”走向“数据驱动+通用特征学习”。当前,大模型配准已在医学影像、遥感、工业检测等领域实现商业化落地,解决了传统方法难以应对的跨模态、少样本、复杂形变等问题。但大模型配准仍面临推理效率、可解释性、数据隐私等挑战,未来的研发核心将是“精度与效率的平衡”“泛化能力的提升”“场景化适配的简化”。对于开发者而言,从简化版大模型配准代码入手,逐步理解预训练+微调的核心逻辑,是衔接前沿技术的有效路径。

专注:太空算力、AI infra、异构调度、大模型成本工程 425

python字符串频次排序_LeetCode | 0451. Sort Characters By Frequency根据字符出现频率排序【Python】...

LeetCode 0451. Sort Characters By Frequency根据字符出现频率排序【Medium】【Python】【桶排序】ProblemGiven a string, sort it in decreasing order based on the frequency of characters.Example 1:Input:"tree"Output:"eert"Exp...

weixin_39942572的博客 426

智能制造——解读AI+工业设备预测性维护解决方案【附全文阅读】

摘要:本方案面向设备密集型制造企业,提供基于AI的预测性维护解决方案。通过工业物联网、大数据和AI算法,整合传感器数据与专家知识库,构建异常检测、故障诊断等模型,实现设备台账管理、智能点检等核心功能。方案配套软硬件工具矩阵,已在锂电子等行业落地应用,可降低维护成本30%以上,减少非计划停机50%,助力企业智能化转型。

cdfunlove的博客 140

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LeetCode题解(0451):按照字符出现频率排序(Python)

题目:原题链接(中等) 标签:哈希表、排序 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(NlogN)O(NlogN)O(NlogN) O(N)O(N)O(N) 128ms (5.95%) Ans 2 (Python) Ans 3 (Python) 解法一(自定义排序): class Solution: def frequencySort(self, s: str) -> str: count = collec

长行 523

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python排序计数器之counter, sort和lambda

Counter Counter,最主要的作用就是计算“可迭代序列中”各个元素(element)的数量,并且按照倒序排列放出来 from collections import Counter if __name__ == '__main__': list =['a', 'b', 'b','b','b','b','c','c'] print(Counter(list)) 结果: Counter({'b': 5, 'c': 2, 'a': 1}) ...

Z1065701256的博客 3091

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

leetcode:451. 根据字符出现频率排序【简单counter + 排序】

解法1 用counter记录 然后用sort根据频率排序 + 按照同一个字母排序 两个优先级 解法1ac code class Solution: def frequencySort(self, s: str) -> str: c = Counter() for letter in s: c[letter] += 1 lst = list(s) # 按出现的频率倒序排 #.

小楼一夜听春雨 437

排序算法——计数排序

计数排序(counting sort)通过统计元素数量来实现排序,通常应用于整数数组。

2202_75359757的博客 1218

Python 随机输入一个字符串,统计该字符串中各种字符出现的次数,并将统计结果按照字符出现次数从高到低进行排序,最终打印排序后的信息

关于sorted():result = sorted(字典.items(), key=lambda item: item[1], reverse=True)# 根据value降序排序后的键值对reverse默认为False(升序),True为降序item:item【1】代表按照字典的值进行排序,若为item:item【0】则是按照字典的键按照ASCALL码进行排序。

Bluefox3183的博客 4334

【根据字符出现频率排序】python刷题记录

遇到问题,那我按照key乘value不就可以了吗。最好是这样输出('a'*3)好熟悉啊python语法。

m0_73629042的博客 810

排序 - 计数排序(Counting Sort)

计数排序(counting sort)通过统计元素数量来实现排序,通常应用于整数数组。

埃泽漫笔 1088

计数排序(Counting-Sort)

计数排序的思想是在一个预排序的整数集中,统计每一个整数在这个整数集中小于等于本身的整数个数,这样的话,就得到了预排序整数集中每个数的在已排序集中的位置, 然后将预排序集与预排序集所处的位置对应起来,每次已排序一个,则将该计数减一(原因是存在相同的整数)。 例如:已知预排序集A={0,2,4,2,3,4},可知最大数为4,则可以申请空间为4的数组C和C'。 step1:统计每个数的个数

hero_hegang的专栏 1035

基于 Python 中的值对计数器进行排序

计数器是 Python 中集合模块的一部分,可帮助计算特定字符出现的总数。该事件可能是数组或字符串的一部分。让我们了解如何使用集合来计算 Python 中特定字符出现的次数。我们可以借助以下代码来做到这一点。

迹忆客 408

Counter()函数进行排序后如何得到有序的键

当得到Counter()函数得到的排序结果后,如何得到有序的键呢?你在这里可以得到答案! 下面以深度学习图像分类问题引入Counter()函数,假设现在有一个文件,记录了最后迭代的五次、在测试集上预测错误的图片的信息,现在要统计每一张预测错误的图片在这五次迭代中总共预测错误的次数、以及预测成错误的类别对应的次数。例如:在五次迭代中,rgb-028-057.JPG这张图片五次都被预测错了,其中预测成第55类为4次,预测为33类为1次,**要求预测错误的图片按照预测失败的次数从高到低的顺序排序**。则格式如下:

hb_learing的博客 1789

根据字符出现频率排序(python)

题目描述: 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 示例1: 输入:“tree” 输出:“eert” 解释:‘e’出现两次,‘r’和‘t’都只出现一次。因此‘e’必须出现在‘r’和‘t’之前。此外,‘eetr’也是一个有效的答案。 示例2: 输入:“cccaaa” 输出:“cccaa...

weixin_40510799的博客 4222
上一篇: python在线电影网站-三
下一篇: Mysql__leecode/0196.删除重复的电子邮箱
百里 Jess
博客等级 码龄8年 3999粉丝 125原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里 Jess

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值