开篇先致歉

其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊。再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了。
不过忙活一阵子还是有些收获的,减肥13斤,刷题80道+,虽然算法还在彩笔的边缘疯狂挣扎(然后挣扎不出去),但起码比之前要好很多了周赛四道题,一道简单和两道中等基本都可以AC,只是有时会第二道中等完成时考试已经结束了,哈哈。至于困难题么,再等等吧....
今天除了谈谈最近刷题的感想,就是给大家分享下,我是如何制作自己的力扣题解记录与电脑、手机markdown云笔记的,希望能对各位走在金三银四跳槽季,或者赶着提升算法的朋友们有所帮助。闲话少叙,直入正题。

为什么要重造轮子

首先,各大平台的笔记工具个人一直常用的是有道云笔记,但markdown文本的使用效果很不理想,而且针对markdown的页面间跳转很不方便,其实前面两句是废话,主要是会员比较贵。
作为一个白嫖党,而且个人的笔记都是和代码相关的,为什么不自己通过工具实现一个手机电脑可以同步的markdown云笔记呢?

工具依赖介绍

说到代码和同步,那么git仓库就顺应而来,唯一麻烦的是手机如何安装git并且能执行git pull/push等操作用来更新呢?那就要介绍下我之前给大家分享过的安卓手机Linux虚拟平台Termux了。
起初使用这个工具,是因为当时同时追好几本小说,然后免费小说网页浏览的时候总会推送那种难登大雅之堂的广告与图片,所以想想自己写个爬虫然后拿Termux安装Python每天中午跑一把,几本小说的更新不就推下来了么,边吃饭边白嫖,真香。
虽然手机这东西,作为开发者工具实在是有些鸡肋,但依赖Termux来实现git下载同步那简直不要太方便。Termux的介绍与使用,我就不过多赘述了,之前总结过一篇非常详尽的文章,大家可以去看看,传送门:

将安卓手机打造成你的python全栈开发利器

有了git,电脑手机分别下载一个markdown读写工具我们的云笔记就ok了。电脑上比较推荐Typora,网上介绍一大把,下载用就对了,好不好用过就知道了。
但手机端该使用什么markdown工具呢?这个研究的过程持续了很久。试过了十几款markdown工具,都存在或多或少的问题,其中最麻烦的是,很多工具的都不支持直接读取手机固定目录的markdown历史文件。这很头大。最终选定了一款Markor的编辑器,它能支持本地目录导入,而且阅读展示效果很不错。
可是,工具就和咱们买书一样,折腾到手了,不看不用也是白搭,那么今天就教大家在日常刷力扣的同时,总结解题并且创建手机、电脑同步的markdown云笔记,方便我们在闲暇之余,复习之前刷过的内容。先看看手机云笔记的最终形态吧!

手机同步

力扣刷题模板

既然要用markdown写力扣解题,就要谈谈力扣刷题的模板了。先来看看我当前刷题的目录和使用的刷题记录模板:

代码结构目录

刷题模板

很多人会问,刷题只管做题就行了,费这么大劲又是弄模板、又是写笔记的,有什么用?起初我也是这么想的,疯狂刷量就行了,做什么笔记。然后,有天随手翻到之前做过的题,竟然一时半会想不起来当时的解题思路,瞬间脑中环绕一句:“学而时习之,不亦说乎!”如果你只是短时间做几道题,可能没有太深刻的感觉,如果你连着做了一两个月,然后突然回头看之前费过一番劲才做出来的题,你就深有体会了。
那么只是一篇篇的做笔记,这样看起来不是很麻烦吗?既然是给大家分享,当然是我觉得这个方法不错才会提出来了!
既然我们每篇文章都是固定的模板,那么我们是否可以写一个批量读取目录和刷题文件内容的代码,快速的为我们创建一个已完成的题目表格呢?of course!

代码改变世界

markdown的创建表格是不需要单独引入插件的,并且它的表格自适应布局功能很强,如果不是强迫症终结者,那原生的表格样式就满足我们的审美了,比如这样:

解题记录表格

这里顺口说一句,GitHub年后更新的深色模式,真是我这种夜猫子的大爱啊....
这里看下我们的表格,编号列没啥说的循环追加即可,分类字段我们通过文件夹名称即可获取,题目、难度、力扣解题链接在每个解题文件里都能通过正则匹配到,麻烦的可能就是我的解题,需要定位相对路径了。但好在README.md在git仓库的根目录,目录匹配会简单一些。
接下来说说自动实现的代码吧:

# -*- coding: utf-8 -*-
# @Author   : 王翔
# @微信号   : King_Uranus
# @公众号    : 清风Python
# @GitHub   : https://github.com/BreezePython
# @Date     : 2021/03/28 18:40:04
# @Software : PyCharm
# @version  :Python 3.7.3
# @File     : algorithm_markdown_table.py
import os
import re# 基础模板头,个人自定义
MARKDOWN_TABLE_TEMPLATE = """
# Algorithm coding practice with Python3.> https://github.com/BreezePython/AlgorithmMarkdown欢迎关注我的公众号: **清风Python**我的个人博客:[https://qingfengpython.cn](https://qingfengpython.cn)| 编 号  | 分 类 | 题 目 | 难 度 | 我的解题 | 力扣题目链接 |
| ----- | ----- | ---- | ---- |  ------ |  --------  |
"""class MakeAlgorithmMarkdownTable:def __init__(self, search_path, excludes):self.search_path = search_pathself.start_dirname = os.path.basename(self.search_path)self.excludes = excludesself.programs = []def dfs_markdown_path(self, path):for child in os.listdir(path):if child.lower() in self.excludes:continuemarkdown_link_dir = path[path.find(self.start_dirname):].replace('\\', '/')if os.path.isfile(os.path.join(path, child)):markdown_link_path = '/'.join([markdown_link_dir, child])self.get_code_table(path, child, markdown_link_path)else:self.dfs_markdown_path(os.path.join(path, child))def get_code_table(self, file_path, file_name, abs_path):algorithm_type = os.path.split(file_path)[-1].strip('_')code_file_name = os.path.splitext(file_name)[0]git_file_link = f"[{code_file_name}]({abs_path})"level = Nonelink = Nonewith open(os.path.join(file_path, file_name), 'r', encoding='utf-8') as f:for i in range(10):info = f.readline().strip()get_level = re.match('>.*难度[:|:]', info)if get_level:# 正则获取解析的span尾节点level = info[get_level.span()[1]:]# 获取力扣题目链接get_link = re.match('.*https://leetcode-cn.com', info)if get_link:link = info[get_link.span()[0]:].strip('> ')self.programs.append([algorithm_type,code_file_name,level, git_file_link,f'[点击跳转]({link})'])@staticmethoddef sort_title(title):title = title.split('.')[0].strip()if title.isdigit():return int(title)return 1000def run(self):self.dfs_markdown_path(self.search_path)self.programs.sort(key=lambda x: self.sort_title(x[1]))with open(os.path.join(os.path.dirname(self.search_path), "README.md"),'w', encoding='utf-8') as readme_file:readme_file.write(MARKDOWN_TABLE_TEMPLATE)for index, info in enumerate(self.programs, start=1):readme_file.write("|{}|{}|{}|{}|{}|{}|\n".format(index, *info))if __name__ == '__main__':# 历史算法解题目录MARKDOWN_PATH = r'D:\AlgorithmMarkdown\Leetcode'# 例外文件列表EXCLUDE_FILES = ['readme.md', '力扣算法刷题目录.md']m = MakeAlgorithmMarkdownTable(MARKDOWN_PATH, EXCLUDE_FILES)m.run()

来看看效果自动生成的markdown效果,完美!

README.md效果

工具分享

Termux获取比较麻烦,默认下载的是链接工具,还需要初始化下载一堆依赖工具才能安装完成。手机没有墙获取很麻烦,在这里为大家准备好了完成的Termux安装包,提供大家下载,公众号 清风Python后台回复 Termux,即可获取完整安装包。
另外力扣刷题的文章同步到了我的个人博客,欢迎大家访问:https://qingfengpython.cn/
也欢迎大家Fork我的git仓库共同学习:https://github.com/BreezePython/AlgorithmMarkdown

之后文章

之后的一个月重点学习还在LeetCode算法刷题上,如果有喜欢刷题的朋友欢迎添加后台联系我,加我微信互相鼓励,共同进步。之后每天会更新关于力扣算法的文章,题目范围不仅限于每天力扣推荐的每日一题,还涉及各类算法,欢迎大家关注,或者留言一起讨论题解。今天的分享就到这里,希望大家喜欢。

结束语

期待你关注我的公众号清风Python,如果你觉得不错,希望能动动手指转发给你身边的朋友们。
我的个人博客地址:https://qingfengpython.cn/


http://www.taodudu.cc/news/show-6047677.html

相关文章:

  • 念出对方的号码
  • Atitit 手机号码选号 规范 流程 attilax总结 v2 r99.docx
  • python基础 列表
  • 每天一道算法题系列十七之电话号码的字母组合
  • ubuntu下深度启动盘制作工具
  • 一键制作U盘启动盘
  • linux制作deepin启动盘制作工具,深度启动盘制作工具(Deepin Boot Maker)下载_深度启动盘制作工具(Deepin Boot Maker)官方下载-太平洋下载中心...
  • 游戏音效的作用以及未来发展
  • 面试已经通过不想去,怎么拒绝HR?
  • 英语每日一句: What’s your point? 你到底想说什么?
  • 偏门赚钱日赚1000,这个创业项目我本来不想说的....
  • 对于本科毕业论文想说一些话
  • NotePad++ 删除重复行
  • 查找并删除EXCEL文件中的重复行(整行重复)
  • Excel如何一键删除重复行?Leo老师告诉你
  • (二)对导入的Excel某列进行合并、求和,删除重复行
  • Excel重复行删除
  • notepad++一键删除重复行
  • 导入Excel如何判是否有重复的行
  • Linux删除重复行
  • 使用UltraEdit删除重复的行
  • excel 2010 删除重复行(按某一列重复)
  • 【python】删除excel表格重复行,数据预处理
  • jxl 删除excel重复的行
  • 如何快速删除CSV、Excel、Markdown表格的重复行?
  • C语言 写一个程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数
  • 1、定义一个复数类Complex,使得下面的代码能够工作。 Complex c1(3,5); Complex c2=4.5; c1.add(c2); c1.show();
  • 遍历两个数组,使得值相等的时候,给第一个数组增加一个值为 true 的属性。
  • 安装deepin微信报错: dpkg: 依赖关系问题使得 deepin.com.wechat:i386 的配置工作不能继续 解决办法如下:
  • 字符串:1.给定一个字符串s,分割s使得s的每一个子串都是回文串

教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!相关推荐

  1. 手机桌面计算机显示,手机如何显示在桌面?敬业签电脑手机同步云便签怎么在桌面显示便签?...

    原标题:手机如何显示在桌面?敬业签电脑手机同步云便签怎么在桌面显示便签? 敬业签云便签支持在手机桌面和电脑桌面上同步使用,手机可以通过桌面小工具或者小组件在桌面显示敬业签中的便签内容,电脑可以安装pc ...

  2. 计算机不同用户资料共享吗,手把手教你创建电脑公用账户,别人借电脑,再也不用为难了...

    一台电脑可以创立多个独立的账户.手把手教你创建一个公用账户,别人借你电脑的时候用公用账户,再也不用担心隐私泄露而为难了. 别人公用账户登录,保护自己隐私 大多数个人电脑里或多或少都有隐私,别人的来借电 ...

  3. 电脑手机输入法粘贴板同步顶置功能操作步骤

    描述:电脑手机输入法粘贴板同步顶置功能操作步骤 步骤: 电脑手机安装qq输入法(目前只有这块软件粘贴板功能) 开启粘贴板功能,可实现电脑手机同步,粘贴板顶置功能

  4. ​力扣解法汇总606-根据二叉树创建字符串

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms https://g ...

  5. 教你免费将手机里的PDF转Word还能同步到电脑

    将手机里的PDF文档进行转换并不是什么新鲜且很难的事情,一般使用软件或者在线都能直接转换,当然免费的也能找到.但如果还要将转换后的文档也同步到电脑上呢? 先将PDF文档发到电脑再转换?还是手机转换后再 ...

  6. 电脑文件夹与手机同步办公?

    电脑文件夹与手机同步办公?在工作中,我们经常遇见要在电脑和电脑间转移文件,电脑和手机间同步文件,以满足工作上的需要.但在不同的生产环境下,比如在mac电脑和win电脑.iPad和手机等平台实现文件的同 ...

  7. 记事本带计算机手机版,有什么手机和电脑能同步的便签记事本

    原标题:有什么手机和电脑能同步的便签记事本 Windows电脑上不乏一些用来记事的软件,但很多也仅仅是可以在电脑上用的记事软件,如果需要电脑和手机可以同步记事内容的记事本软件,可以在设备上免费安装敬业 ...

  8. 华为6x手机计算机软件没有了,只用一招,教你将华为手机变成电脑,这波操作没几个人知道...

    原标题:只用一招,教你将华为手机变成电脑,这波操作没几个人知道 说手机取代mp3,mp4,平板数码相机并不合适,不过也差不多了.不过呢手机取代电脑目前还是处于理论阶段.这两天华为在内侧云电脑,在手机平 ...

  9. qq手机电脑消息同步_手机电脑完全同步!秒杀一切投屏软件和模拟器!

    有一种软件叫做模拟器 能够在电脑上实现手机上的操作 比如在电脑上玩和平精英.王者荣耀等 小编也试过好几种模拟器 但是体验相当不如人意 延迟超高.画质模糊.卡顿厉害 完全没有手机上的那种体验 今天给大家 ...

最新文章

  1. DeepMind集成AI智能体架构「MERLIN」:基于目标导向智能体中的无监督预测记忆
  2. Win2003系统安全设置
  3. Ceph 的数据回填和恢复
  4. theme editor android,谷歌宣布将于下月停用 Material Theme Editor
  5. Java中接口的多继承
  6. 快速入门:使用 Docker 运行 SQL Server 容器映像
  7. build unity 丢失_【厚积薄发】Unity 2017打包iOS版本参数丢失
  8. CentOS 7.5 编译安装 Nginx 1.15.3
  9. Bill Gates 2007年哈佛演讲(中/英文)
  10. 前端demo - 点名器
  11. 如何安装.nupkg文件
  12. android 安全管理,基于web的Android应用安全管理系统
  13. chariot iperf使用_iperf局域网性能工具
  14. SSM框架整合demo
  15. Freeman链码,差分码,归一化链码,归一化差分码
  16. 左对齐杨辉三角python_什么是左的错误?
  17. 羽毛球比赛五类典型假动作盘点及技术解读
  18. HDU 5956 The Elder(树型DP+斜率优化)
  19. 知识表示学习研究进展
  20. 苹果Windows7系统修改文件夹时出现没有权限操作该怎么办?

热门文章

  1. 微信小程序 | 自动定时结束录制
  2. PAML中文文档/计算分子进化
  3. 软件测试的自我修养之学习自动化测试
  4. 奇幻之旅,全世界畅游
  5. FPGA EMMC HS400模式verilog驱动开发
  6. Hi3516DV300开发板——2.uboot、kernel、fs文件系统烧写
  7. 记录-老联想笔记本安装 centos8
  8. 如何分清国内版FireFox和国际版FireFox
  9. 阿里修炼秘籍,如何快速成长的几个技巧?
  10. Jest 组件库单元测试【基础语法篇】