⭐️leetcode解题系列⭐️192.统计词频(shell)(代码片段)

Lucifer三思而后行 Lucifer三思而后行     2022-12-15     795

关键词:

❤️ 原题 ❤️

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

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

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

示例:

假设 words.txt 内容如下:

the day is sunny the the
the sunny is is

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

the 4
is 3
sunny 2
day 1

说明:

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

⭐️ 解题思路 ⭐️

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

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

cat words.txt | xargs -n1


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

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


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

cat words.txt | xargs -n 1 | sort | uniq -c | sort -nr | awk 'print $2" "$1'


至此,本题已解。

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

❄️ 写在最后 ❄️

本题依然是使用 Linux 的一些基础命令:xargssortuniqawk,基础很重要!


本次分享到此结束啦~

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

⭐️leetcode解题系列⭐️175.组合两个表(oracle简单的左右连接)(代码片段)

175.组合两个表❤️原题❤️⭐️解题思路⭐️❄️写在最后❄️❤️原题❤️表1:Person+-------------+---------+|列名|类型|+-------------+---------+|PersonId|int||FirstName|varchar||LastName|varchar|+-------------+ 查看详情

⭐️leetcode解题系列⭐️175.组合两个表(oracle简单的左右连接)(代码片段)

175.组合两个表❤️原题❤️⭐️解题思路⭐️❄️写在最后❄️❤️原题❤️表1:Person+-------------+---------+|列名|类型|+-------------+---------+|PersonId|int||FirstName|varchar||LastName|varchar|+-------------+ 查看详情

⭐️leetcode解题系列⭐️194.转置文件(shell)(代码片段)

194.转置文件❤️原题❤️☀️解题思路☀️分析xargs多行变单行awk+print打印列head+wc获取列数❄️写在最后❄️❤️原题❤️给定一个文件file.txt,转置它的内容。你可以假设每行列数相同,并且每个字段由''... 查看详情

⭐️leetcode解题系列⭐️194.转置文件(shell)(代码片段)

194.转置文件❤️原题❤️☀️解题思路☀️分析xargs多行变单行awk+print打印列head+wc获取列数❄️写在最后❄️❤️原题❤️给定一个文件file.txt,转置它的内容。你可以假设每行列数相同,并且每个字段由''... 查看详情

⭐️leetcode解题系列⭐️178.分数排名(oracledense_rank函数)(代码片段)

178.分数排名❤️原题❤️⭐️解题思路⭐️☀️解题答案☀️❄️写在最后❄️❤️原题❤️编写一个SQL查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应... 查看详情

⭐️leetcode解题系列⭐️178.分数排名(oracledense_rank函数)(代码片段)

178.分数排名❤️原题❤️⭐️解题思路⭐️☀️解题答案☀️❄️写在最后❄️❤️原题❤️编写一个SQL查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应... 查看详情

⭐️leetcode解题系列⭐️1179.重新格式化部门表(oraclepivot行转列函数)(代码片段)

1179.重新格式化部门表❤️原题❤️☀️解题思路☀️Pivot函数简介创建测试表Department插入测试数据执行Pivot行转列函数❄️写在最后❤️原题❤️部门表Department:+---------------+---------+|ColumnName|Type|+---------------+... 查看详情

⭐️leetcode解题系列⭐️1179.重新格式化部门表(oraclepivot行转列函数)(代码片段)

1179.重新格式化部门表❤️原题❤️☀️解题思路☀️Pivot函数简介创建测试表Department插入测试数据执行Pivot行转列函数❄️写在最后❤️原题❤️部门表Department:+---------------+---------+|ColumnName|Type|+---------------+... 查看详情

⭐️leetcode解题系列⭐️177.第n高的薪水(oracledense_rank函数)(代码片段)

177.第N高的薪水❤️原题❤️⭐️解题思路⭐️❄️写在最后❄️❤️原题❤️编写一个SQL查询,获取Employee表中第n高的薪水(Salary)。+----+--------+|Id|Salary|+----+--------+|1|100||2|200||3|300|+----+---- 查看详情

⭐️leetcode解题系列⭐️177.第n高的薪水(oracledense_rank函数)(代码片段)

177.第N高的薪水❤️原题❤️⭐️解题思路⭐️❄️写在最后❄️❤️原题❤️编写一个SQL查询,获取Employee表中第n高的薪水(Salary)。+----+--------+|Id|Salary|+----+--------+|1|100||2|200||3|300|+----+---- 查看详情

⭐️leetcode解题系列⭐️185.部门工资前三高的所有员工(oracledense_rank函数)(代码片段)

185.部门工资前三高的所有员工❤️原题❤️⭐️解题思路⭐️构建测试数据❤️开始解题❄️写在最后❄️❤️原题❤️Employee表包含所有员工信息,每个员工有其对应的工号Id,姓名Name,工资Salary和部门编号Departmen... 查看详情

⭐️leetcode解题系列⭐️185.部门工资前三高的所有员工(oracledense_rank函数)(代码片段)

185.部门工资前三高的所有员工❤️原题❤️⭐️解题思路⭐️构建测试数据❤️开始解题❄️写在最后❄️❤️原题❤️Employee表包含所有员工信息,每个员工有其对应的工号Id,姓名Name,工资Salary和部门编号Departmen... 查看详情

⭐️leetcode解题系列⭐️176.第二高的薪水(oracledense_rank和max)(代码片段)

176.第二高的薪水❤️原题❤️⭐️解题思路⭐️思路一思路二❄️写在最后❄️❤️原题❤️编写一个SQL查询,获取Employee表中第二高的薪水(Salary)。+----+--------+|Id|Salary|+----+--------+|1|100||2|200||3|30... 查看详情

⭐️leetcode解题系列⭐️176.第二高的薪水(oracledense_rank和max)(代码片段)

176.第二高的薪水❤️原题❤️⭐️解题思路⭐️思路一思路二❄️写在最后❄️❤️原题❤️编写一个SQL查询,获取Employee表中第二高的薪水(Salary)。+----+--------+|Id|Salary|+----+--------+|1|100||2|200||3|30... 查看详情

☀️~爆肝万字总结递归~❤️玩转算法系列之我如何才能掌握递归解题的能力❤️~十大经典问题助你突破极限~☀️(代码片段)

🍅作者主页:Roninaxious🍅欢迎点赞👍收藏⭐留言📝🚢前言🎐何为递归递归顾名思义就是´递´和´归´👀所谓的‘递’也就是“向下递去”,这个问题可以分解为若干个且形式相同的子问题... 查看详情

小y学算法⚡️每日leetcode打卡⚡️——1.两数之和(代码片段)

目录📢引言🌲原题样例🌞解题思路🌻C#方法一:暴力法🌻C#方法二:哈希🎋Java方法一:暴力枚举🎋Java方法二:哈希表💬总结📢引言🌻🌻🌻🌻 查看详情

小y学算法⚡️每日leetcode打卡⚡️——2.两数相加(代码片段)

📢前言🌲原题样例🌞解题思路🌻C#方法🎋Java方法:模拟💬总结📢前言🌻🌻🌻🌻🌻🌻🌻🌻🌻🌻🌻 查看详情

❤️互联网大厂面试高频算法题汇总❤️——❤️二分专场❤️(代码片段)

...题目汇总3、二分模板4、二分流程5、二分高频题详解5.1、LeetCode33.搜索旋转排序数组5.2、LeetCode704.二分查找5.3、LeetCode69.x的平方根5.4、LeetCode4.寻找两个正序数组的中位数5.5、LeetCode153.寻找旋转排序数组中的最小值5.6、LeetCode162.寻... 查看详情