LeetCode shell 题解(全)
发布日期:2025-04-05 01:35:49 浏览次数:10 分类:精选文章

本文共 1323 字,大约阅读时间需要 4 分钟。

LeetCode Shell练习题集合解析:从基础到实战

作为一名从事软件开发的程序员,Shell脚本无疑是必备的技能。LeetCode平台提供的四个Shell练习题目虽然数量不多,但涉及到的知识点却相当丰富,涵盖tr、grep、awk、sed等工具的使用,这不仅是对基础能力的考验,更是对日常工作思维的一种训练。尝试解读并执行这些题目,对熟悉Shell编程的新手来说既是挑战,又是提升的绝佳机会。

以下是对LeetCode上各个Shell练习题目的解析与解决方案:


LeetCode 192. 统计词频

问题描述:需要统计并显示一个文本文件中各单词的频率,按从大到小排序。

解决思路

  • 使用tr工具来将文本中的空格替换为换行符,保证每个单词占一行。
  • 对处理后的文本进行排序,默认的ASCII值排序可以满足简单的升序需求。
  • 利用uniq命令去重,并添加-c参数,来输出每个单词出现的次数。
  • 最后再次进行逆序排序(sort -r),以获取从高到低的频率顺序。
  • 使用awk工具进行格式化输出,将单词和对应的次数组合显示。
  • 命令示例

    cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -r | awk '{print $2 " " $1}'

    LeetCode 193. 有效电话号码

    问题描述:从文本文件中筛选出有效的电话号码,格式为(123) 123-4567 或 123-4567。

    解决思路

  • 使用grep命令匹配指定的电话号码格式,正则表达式^(\d{3}-\d{3}-\d{4})$|^(\(\d{3}\) \d{3}-\d{4})$用来过滤有效号码。
  • 过滤后的号码可以直接输出到标准输出。
  • 命令示例

    cat file.txt | grep -P '^(\d{3}-\d{3}-\d{4})$|^(\(\d{3}\) \d{3}-\d{4})$'

    LeetCode 194. 转置文件

    问题描述:将文件的行和列转置。

    解决思路

  • 使用awk工具遍历文件内容,将所有行存储到数组res中。
  • 初始行(第一行)被单独处理,后续行与之前行拼接,形成新行的内容。
  • 最终输出转置后的文件内容。
  • 命令示例

    cat file.txt | awk '{for(i=1; i<=NF; i++) {if (NR==1) res[i]=$i; else res[i]=res[i]" "$i}} END {for (i=1; i<=NF; i++) print res[i]}'

    LeetCode 195. 第十行

    问题描述:输出文件中第十行内容。

    解决思路:1.Directly使用awk工具查找第10行。

    命令示例

    awk 'NR == 10' file.txt

    LeetCode Shell练习的价值

    Shell编程作为一种灵活而强大的工具,在日常开发工作中频繁被用到。通过参与LeetCode上的Shell练习题,我们可以快速掌握常用的工具链,比如grepawksort等,同时培养解题思维和脚本化解决问题的能力。对于想要提升代码效率的程序员来说,这些练习题无疑提供了一个绝佳的平台。

    上一篇:LeetCode Text Justification
    下一篇:leetcode Plus One

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2025年04月15日 03时23分18秒