LeetCode: 192. Word Frequency

本文介绍了一种使用Bash脚本解决LeetCode 192 Word Frequency问题的方法,通过一系列命令行操作,包括使用awk进行数据提取、sort进行排序、uniq统计频率等,最终实现了对文本文件中单词频率的计算,并按频率从高到低排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LeetCode: 192. Word Frequency

题目描述

Write a bash script to calculate the frequency of each word in a text file words.txt.

For simplicity sake, you may assume:

words.txt contains only lowercase characters and space ' ' characters.
Each word must consist of lowercase characters only.
Words are separated by one or more whitespace characters.

Example:

Assume that words.txt has the following content:

the day is sunny the the
the sunny is is

Your script should output the following, sorted by descending frequency:

the 4
is 3
sunny 2
day 1

Note:

Don't worry about handling ties, it is guaranteed that each word's frequency count is unique.
Could you write it in one-line using Unix pipes?

解题思路

见代码。

AC 代码

# FYI:
# NF(awk): 字段数量
# -c, --count(uniq): 在每列旁边显示该行重复出现的次数
# -n, --numeric-sort(sort): compare according to string numerical value
# -r, --reverse(sort): reverse the result of comparisons

# 1. 获取单词列表
# 2. 对单词列表进行排序
# 3. 统计相同合并的单词
# 4. 根据单词列表出现次数排序
# 5. 调整输出顺序
awk '{for(i=1; i<= NF; ++i) print $i}' words.txt | sort | uniq -c | sort -nr | awk '{print$2, $1}'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值