当前位置: 首页 > news >正文

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

R2-字符串算法

包哈希表的呀。 

注意

class Solution:def frequencySort(self, s: str) -> str:dict=defaultdict(list)#字符串不能直接排序,需要转换为列表["a","b","c"]s=list(s)for str in s:if not dict[str]:dict[str]=1else:dict[str]+=1#降序排序s.sort(key=lambda x:dict[x],reverse=True)#转换回字符列表return ''.join(s)

遇到问题,那我按照key乘value不就可以了吗。很ok的感觉。

class Solution:def frequencySort(self, s: str) -> str:dict=defaultdict(int)#字符串不能直接排序,需要转换为列表["a","b","c"]s=list(s)ret=[]# 统计每个字符出现的次数for char in s:dict[char] += 1# 降序排序,按照次数进行输出# 使用 sorted() 而不是 sort()for key in sorted(dict.keys(), key=lambda x: dict[x], reverse=True):ret.append(key * dict[key])# 转换回字符串return ''.join(ret)

香香。

思路也可如下:

最好是这样输出('a'*3)

另解:

class Solution:def frequencySort(self, s: str) -> str:# 使用 collections.Counter 来统计每个字符的出现次数# Counter(s) 会返回一个字典,其中键是字符,值是该字符出现的次数char_count = collections.Counter(s)# 使用 most_common() 方法来获取一个按出现次数降序排列的字符及其计数的列表# most_common() 默认返回所有元素,你可以传递一个参数来指定返回多少个最常见的元素sorted_char_count = char_count.most_common()# 使用列表推导式来创建一个新列表,其中每个元素是字符乘以其出现的次数# 例如,如果字符 'a' 出现了 3 次,那么列表中将包含 'aaa'char_list = [i * j for i, j in sorted_char_count]# 使用 ''.join() 方法将列表中的所有字符串连接成一个字符串,并返回return ''.join(char_list)

eg: 

s = "tree"
solution = Solution()
print(solution.frequencySort(s))  # 输出 "eert" 或 "eetr",因为 'e' 出现 2 次,'t' 和 'r' 各出现 1 次

我靠????!!!100%???!!! 

好熟悉啊python语法

听说还能用大顶堆和顶排序

ps:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 阿里云RDS到亚马逊云RDS的实时数据同步方案详解
  • 传知代码-智慧医疗:纹理特征VS卷积特征(论文复现)
  • VSCode切换默认终端
  • IP Fabric三层路由
  • 关于黑马Ajax项目的笔记
  • 原生微信小程序wxml2canvas生成海报并包保存至本地
  • 【网络安全】文件上传基础及过滤方式
  • Vue前端工程
  • 【面试】前端开发中的“八股文”:助力还是阻力?
  • 入门 PyQt6 看过来(案例)16~ 竖状菜单
  • 晋升有望,5本易录用的计算机三四区潜力刊,通过率>50%,2个月超速接收,好发
  • 飞牛爬虫FlyBullSpider 一款简单方便强大的爬虫,限时免费 特别适合小白!用它爬下Boss的2024年7月底Java岗位,分析一下程序员就业市场行情
  • Prometheus+Grafana 监控平台实践-搭建常用服务监控告警
  • 7月29(信息差)
  • 家庭教育系列—剑桥通用英语五级考试介绍
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Bootstrap JS插件Alert源码分析
  • C++类的相互关联
  • express + mock 让前后台并行开发
  • Java IO学习笔记一
  • Js基础知识(一) - 变量
  • vue 配置sass、scss全局变量
  • webpack+react项目初体验——记录我的webpack环境配置
  • 编写符合Python风格的对象
  • 给github项目添加CI badge
  • 构建二叉树进行数值数组的去重及优化
  • 理清楚Vue的结构
  • 前端面试总结(at, md)
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 事件委托的小应用
  • 算法之不定期更新(一)(2018-04-12)
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 【干货分享】dos命令大全
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • raise 与 raise ... from 的区别
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #、%和$符号在OGNL表达式中经常出现
  • #Linux(make工具和makefile文件以及makefile语法)
  • #php的pecl工具#
  • #每天一道面试题# 什么是MySQL的回表查询
  • (33)STM32——485实验笔记
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (C语言)球球大作战
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (Qt) 默认QtWidget应用包含什么?
  • (补充)IDEA项目结构
  • (苍穹外卖)day03菜品管理
  • (二)丶RabbitMQ的六大核心