⭐️ LeetCode解题系列 ⭐️ 192. 统计词频(Shell)

@TOC(192. 统计词频)

❤️ 原题 ❤️

写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。

为了简单起见,你可以假设:

  • words.txt 只包括小写字母和 ' ' 。
  • 每个单词只由小写字母组成。
  • 单词间由一个或多个空格字符分隔。

示例:

假设 words.txt 内容如下:

csharp 复制代码
the day is sunny the the
the sunny is is

你的脚本应当输出(以词频降序排列):

csharp 复制代码
the 4
is 3
sunny 2
day 1

说明:

  • 不要担心词频相同的单词的排序问题,每个单词出现的频率都是唯一的。
  • 你可以使用一行 Unix pipes 实现吗?

⭐️ 解题思路 ⭐️

注意几个关键词:词频降序排列、统计每个单词出现次数、使用一行命令实现。

① 使用 xargs 将所有行转为单列显示:

bash 复制代码
cat words.txt | xargs -n1

② 使用 sort + uniq 函数进行排列:

  • sort -nr 表示依照数值的大小降序排序。
  • uniq -c 表示在每列旁边显示该行重复出现的次数。
bash 复制代码
cat words.txt | xargs -n1 | sort | uniq -c | sort -nr

③ 使用 awk + print 函数将 1、2 列位置互换:

bash 复制代码
cat words.txt | xargs -n 1 | sort | uniq -c | sort -nr | awk '{print $2" "$1}'

至此,本题已解。

去 LeetCode 执行一下看看结果吧:

❄️ 写在最后 ❄️

本题依然是使用 Linux 的一些基础命令:xargs、sort、uniq、awk,基础很重要!


本次分享到此结束啦~

如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。


📚 推荐阅读:DBA 学习之路

如果这篇文章对你有帮助,推荐访问我的 Oracle DBA 系统学习站点,涵盖 100 天完整学习路线:

  • 🔧 Oracle 安装部署 · RMAN 备份恢复 · Data Pump 数据迁移
  • 🏗️ RAC 高可用 · DataGuard 容灾 · 多租户架构
  • 🔍 故障排查 · 升级迁移 · GoldenGate 数据同步

👉 立即访问 ora100.com →

相关推荐
码事漫谈2 小时前
骂AI,会让它做得更好吗?
后端
陈随易3 小时前
bm2,Node.js 与 Bun 项目部署新选择
前端·后端·程序员
架构技术专栏4 小时前
AI Agent 框架怎么选:从一次制度查询拆出技术边界
后端·面试
明月_清风6 小时前
SaaS 的三层挣钱逻辑,正在被 AI 从第一层击穿
人工智能·后端
谁在黄金彼岸8 小时前
nginx服务化五套方案原理解剖与选型
后端
谁在黄金彼岸8 小时前
WinSW在Win7上失败真相-实测与修复
后端
花间相见8 小时前
【后端开发|Redis进阶01】—— Redis分布式锁全解:从SETNX到Redisson看门狗,再到RedLock
后端·面试
llqbzllll8 小时前
A2A 1.0 到底和 MCP 差在哪:从 Agent Card、Task 到 Java 最小互操作
后端
花间相见8 小时前
【后端开发|JVM基础01】—— Java垃圾回收全解:从分代内存模型到各收集器的分代职责
后端
geovindu8 小时前
rust: Abstract Factory pattern
开发语言·后端·设计模式·rust·抽象工厂模式