用脚本整理Leetcode题解
原文地址: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=***
意思是字符串全部转为小写赋值给变量。 最后分别有三列,对应第二张图中的三列:
第一列取题号,
${varible%%string*}
表示从右向左截取变量中最后一个 string 后的字符串,这里便是取 题号.题名.md 中的 题号 ,代码如下:${line%%.*} 复制代码
第二列由题名得到 leetcode 中对应的题目描述的地址,例如 Leetcode第一道题名为 Two Sum ,对应的 url 为 leetcode.com/problems/tw… ,即将题名中间空格换为 '-' 即可,代码如下:
[$title](https://leetcode.com/problems/algorithms/url//' '/'-'}/description/) 复制代码
第三列表示题解地址,因为 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题解相关推荐
- 32位有符号整数_008. 字符串转换整数 (atoi) | Leetcode题解
点击上方"蓝色字体",选择"设为星标" 每天复习一道面试题,轻松拿大厂Offer~ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...
- 008. 字符串转换整数 (atoi) | Leetcode题解
点击上方"蓝色字体",选择"设为星标" 每天复习一道面试题,轻松拿大厂Offer~ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...
- LeetCode题解:x的平方根
x的平方根(easy) 更好的阅读体验应该是: 审题-思考 答题 整理-归纳 一.题目 LeetCode:69.x 的平方根 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果 ...
- LeetCode题解:找到 K 个最接近的元素
模版III - 找到 K 个最接近的元素(middle) 一.题目 LeetCode658.找到 K 个最接近的元素 给定一个排序好的数组 arr ,两个整数 k 和 x ,从数组中找到最靠近 x(两 ...
- LeetCode题解:35.搜索插入位置
搜索插入位置(easy) 更好的阅读体验应该是: 审题-思考 答题 整理-归纳 一.题目 LeetCode题目链接:35.搜索插入的位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引 ...
- LeetCode题解PDF百度网盘下载
LeetCode题解PDF下载 链接: https://pan.baidu.com/s/13GslyxeHKe9wEz-MBYfH3Q 密码: 12fc 其他学习资源都整理在这个Github了: ht ...
- LeetCode题解:704.二分查找
二分查找(easy) 更好的阅读体验应该是: 审题-思考 答题 整理-归纳 一.题目 LeetCode:704.二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 targe ...
- 900 多道 LeetCode 题解,这个 GitHub 项目值得 Star!
转自 | 码农有道 大家好,我是小 G. 周末风和日丽,适合刷 LeetCode 今天给你们推荐个 GitHub 项目,里面收集了 900 多道 LeetCode 题解,并包含中英文两个版本,适合大多 ...
- PHP版Leetcode题解开始随缘更新
2019独角兽企业重金招聘Python工程师标准>>> PHP版Leetcode题解 我叫skys215,是一名bug工程师. 我接触编程的时间比较早,但是因为我数学不好加上比较懒, ...
最新文章
- 机器学习平台跃迁,AI中台才是大势所趋
- 在django restful framework中设置django model的property
- 邮件列表统计(网站推广)
- [转载]细说Java反射
- 她说:行!嫁人就选程序员!
- php整合支付宝,Thinkphp5.0整合支付宝在线下单
- 识别图书ISBN号并输出查询结果的示例 | Marshal's Blog
- python3 csv以追加方式写入_从拉入的JSON d向CSV追加和或写入
- 使用GoKart对Go代码进行静态安全分析
- 使用GenyMotion模拟器+抓包工具SRSniffer分析网络请求
- vivo X9L的usb调试模式在哪里,开启vivo X9Lusb调试模式的流程
- Windows卸载easyconnect
- 租房注意事项(一):租房术语
- 相亲聊什么?想要避免尬聊,就从这6个话题入手
- Apple 好莱坞艳照门的安全分析
- syskey (win7启动密码)加密和破解方法
- 有没有一款软件是测试阅读准确率的,当今各一线股票软件系统指标准确率测试一览表...
- jsnes-FC模拟器-在线玩fc游戏
- Dedecms 5.7sp1文章模型栏目接口使用手册
- 鸿蒙系统电动车,鸿蒙系统被刷屏,新日电动车在其中是什么角色?
热门文章
- sqlserver 2005的安装部署
- 接口开发规范 restful接口开发规范
- 中国互联网的第二次“千团大战”已经开始了
- java,andoid安卓去掉替换字符串中的空字符空格换行等
- 《神探tcpdump第五招》-linux命令五分钟系列之三十九
- javascript实现的自适应宽度的瀑布流
- 客户端访问Web Service--参数类型的序列化与反序列化(一)
- 3D程序运行在服务器上 VirtualGL
- 基于live555开发嵌入式linux系统的rtsp直播服务
- vivo面试经验4(linux基本操作,最基本,必须得会!!)