原文地址:blogof33.com/post/17/

前序

Leetcode 做了很多道了,没怎么整理,只是每道题对应一个markdown题解文件,Leetcode项目仓库里面呈现方式是这样的:

可以看出结构很混乱,所以 ACool 想做一个索引放在 README 里面。像这样:

按照题号排序,中间是题目名称和题目的 Leetcode 链接,最后是题解语言和链接。按照这样的结构来手动一条一条整理,实在是太花时间了,所以 ACool 写了一个索引生成 shell script 来整理。

索引生成脚本

脚本的代码如下:

#! /bin/bash
ls | grep '^[0-9]'|sort -n|while read line
dotitle=`echo ${line}|cut -d . -f 2`declare -l url=${title}echo "|${line%%.*}|[$title](https://leetcode.com/problems/algorithms/url//' '/'-'}/description/)|[C++](https://github.com/starFalll/LeetCode/blob/master/algorithms/${line//' '/'%20'})|" >>README.md
done
复制代码

解释一下,如第一张图所示,所有题解文件都是(题号.题名.md)的形式,所以第一行代码按照题号对其进行排序,从小到大,将排序的结果按行取出。一行一行处理。 然后是一个循环,每行(即每个题解文件)先取中间的题名保存在 title 变量里,再将其所有字母小写的内容保存在 url 中,注意这里 declare -l varible=*** 意思是字符串全部转为小写赋值给变量。 最后分别有三列,对应第二张图中的三列:

  1. 第一列取题号,${varible%%string*} 表示从右向左截取变量中最后一个 string 后的字符串,这里便是取 题号.题名.md 中的 题号 ,代码如下:

    ${line%%.*}
    复制代码
  2. 第二列由题名得到 leetcode 中对应的题目描述的地址,例如 Leetcode第一道题名为 Two Sum ,对应的 url 为 leetcode.com/problems/tw… ,即将题名中间空格换为 '-' 即可,代码如下:

    [$title](https://leetcode.com/problems/algorithms/url//' '/'-'}/description/)
    复制代码
  3. 第三列表示题解地址,因为 url 会将空格转换成 %20 ,所以这里将空格换成 %20 即可,代码如下:

    [C++](https://github.com/starFalll/LeetCode/blob/master/algorithms/${line//' '/'%20'})
    复制代码

然后将这一行索引重定向到 README.md 文件里面便完成了索引的生成。

结果和第二张图一样:

更新索引脚本

虽然整理好了索引,但是因为剩下的题不是按照顺序刷的,新题的索引如何插入解决呢?手动也很麻烦,可以将之前的索引生成脚本更改一下,变成更新索引脚本。代码如下:

#! /bin/bash
for num in $*
doall=$(ls algorithms|sort -n)line=$(echo "${all}"|grep -n "^${num}\..*")echo "${line}"title=`echo ${line}|cut -d . -f 2`declare -l url=${title}newline=$(echo ${line}| cut -d : -f 2)declare -i num=$(echo ${line}|cut -d : -f 1)res=$(echo "|${newline%%.*}|[$title](https://leetcode.com/problems/${url//' '/'-'}/description/)|[C++](https://github.com/starFalll/LeetCode/blob/master/algorithms/${newline//' '/'%20'})|")num=num+6sed -i ''${num}'i\'"${res}"'' README.md
done
复制代码

传入的参数为新题的题号,用循环一个一个处理,将新题加入排序中找到其顺序,然后插入之前的索引即可。最后一行代码:

sed -i ''${num}'i\'"${res}"'' README.md
复制代码

其中 sed 是流编辑器,按行处理,将结果插入索引中。

脚本使用的方式如下,即图中的 newindex.sh

用脚本整理文件真的很方便,各位读者也可以尝试一下。

附上 ACool 的 Leetcode 题解地址:github.com/starFalll/L…

用脚本整理Leetcode题解相关推荐

  1. 32位有符号整数_008. 字符串转换整数 (atoi) | Leetcode题解

    点击上方"蓝色字体",选择"设为星标" 每天复习一道面试题,轻松拿大厂Offer~ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...

  2. 008. 字符串转换整数 (atoi) | Leetcode题解

    点击上方"蓝色字体",选择"设为星标" 每天复习一道面试题,轻松拿大厂Offer~ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...

  3. LeetCode题解:x的平方根

    x的平方根(easy) 更好的阅读体验应该是: 审题-思考 答题 整理-归纳 一.题目 LeetCode:69.x 的平方根 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果 ...

  4. LeetCode题解:找到 K 个最接近的元素

    模版III - 找到 K 个最接近的元素(middle) 一.题目 LeetCode658.找到 K 个最接近的元素 给定一个排序好的数组 arr ,两个整数 k 和 x ,从数组中找到最靠近 x(两 ...

  5. LeetCode题解:35.搜索插入位置

    搜索插入位置(easy) 更好的阅读体验应该是: 审题-思考 答题 整理-归纳 一.题目 LeetCode题目链接:35.搜索插入的位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引 ...

  6. LeetCode题解PDF百度网盘下载

    LeetCode题解PDF下载 链接: https://pan.baidu.com/s/13GslyxeHKe9wEz-MBYfH3Q 密码: 12fc 其他学习资源都整理在这个Github了: ht ...

  7. LeetCode题解:704.二分查找

    二分查找(easy) 更好的阅读体验应该是: 审题-思考 答题 整理-归纳 一.题目 LeetCode:704.二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 targe ...

  8. 900 多道 LeetCode 题解,这个 GitHub 项目值得 Star!

    转自 | 码农有道 大家好,我是小 G. 周末风和日丽,适合刷 LeetCode 今天给你们推荐个 GitHub 项目,里面收集了 900 多道 LeetCode 题解,并包含中英文两个版本,适合大多 ...

  9. PHP版Leetcode题解开始随缘更新

    2019独角兽企业重金招聘Python工程师标准>>> PHP版Leetcode题解 我叫skys215,是一名bug工程师. 我接触编程的时间比较早,但是因为我数学不好加上比较懒, ...

最新文章

  1. 机器学习平台跃迁,AI中台才是大势所趋
  2. 在django restful framework中设置django model的property
  3. 邮件列表统计(网站推广)
  4. [转载]细说Java反射
  5. 她说:行!嫁人就选程序员!
  6. php整合支付宝,Thinkphp5.0整合支付宝在线下单
  7. 识别图书ISBN号并输出查询结果的示例 | Marshal's Blog
  8. python3 csv以追加方式写入_从拉入的JSON d向CSV追加和或写入
  9. 使用GoKart对Go代码进行静态安全分析
  10. 使用GenyMotion模拟器+抓包工具SRSniffer分析网络请求
  11. vivo X9L的usb调试模式在哪里,开启vivo X9Lusb调试模式的流程
  12. Windows卸载easyconnect
  13. 租房注意事项(一):租房术语
  14. 相亲聊什么?想要避免尬聊,就从这6个话题入手
  15. Apple 好莱坞艳照门的安全分析
  16. syskey (win7启动密码)加密和破解方法
  17. 有没有一款软件是测试阅读准确率的,当今各一线股票软件系统指标准确率测试一览表...
  18. jsnes-FC模拟器-在线玩fc游戏
  19. Dedecms 5.7sp1文章模型栏目接口使用手册
  20. 鸿蒙系统电动车,鸿蒙系统被刷屏,新日电动车在其中是什么角色?

热门文章

  1. sqlserver 2005的安装部署
  2. 接口开发规范 restful接口开发规范
  3. 中国互联网的第二次“千团大战”已经开始了
  4. java,andoid安卓去掉替换字符串中的空字符空格换行等
  5. 《神探tcpdump第五招》-linux命令五分钟系列之三十九
  6. javascript实现的自适应宽度的瀑布流
  7. 客户端访问Web Service--参数类型的序列化与反序列化(一)
  8. 3D程序运行在服务器上 VirtualGL
  9. 基于live555开发嵌入式linux系统的rtsp直播服务
  10. vivo面试经验4(linux基本操作,最基本,必须得会!!)