Hot100 Assistant
Hot100 Assistant 是面向力扣 Hot 100 的本地优先 VS Code 练习助手。题单、题面、代码文件、进度、复习提醒、中文题解和官网集成集中在一个工作流中。
功能概览
- Hot 100 题单侧边栏,支持按难度、标签和状态筛选。
- 打开题目时生成代码文件,并以题面/原生编辑器分栏显示。
- 支持 Python(
python,默认,class Solution(object)/docstring 官方模板)、Python3(python3,类型注解官方模板)、C++、Java、JavaScript、TypeScript、C、C#、Go 和 Rust。
- 支持本地进度、笔记、低/高强度复习策略、到期提醒和可视化面板。
- 可读取 LeetCode CN 中文题解,按首选语言筛选并在安全 Webview 中显示 Markdown 和可选 KaTeX 公式。
- 可选集成 LeetCode VS Code 扩展,完成登录、样例运行、提交、提交历史和进度同步。
- 切换存储目录时迁移已有进度和代码;同名文件不覆盖。
安装与首次使用
从 Marketplace 安装,或安装本地 VSIX:
code --install-extension hot100-assistant-<version>.vsix
- 打开命令面板,运行
Hot100 Assistant: 操作中心。
- 选择存储目录和首选语言。
- 打开一道题,确认左侧题面、右侧代码文件可用。
- 如需登录、运行样例或提交,安装扩展 ID 为
LeetCode.vscode-leetcode 的 LeetCode 扩展,再运行 Hot100 Assistant: 登录 LeetCode。
- 如需同步官网进度,设置 LeetCode 用户名后执行同步命令。
Hot100 Assistant 会读取 LeetCode 扩展写入 ~/.lc/ 的登录态,但不持久化自己的 Cookie。两者是独立项目;未安装该扩展时,部分操作会退回浏览器或公开数据。
中文题解
在题目树的右键菜单、题目行的书本按钮或命令面板中执行 Hot100 Assistant: 查看题解。扩展会:
- 解析当前题目。
- 按
hot100.defaultLanguage 从 LeetCode CN 获取最多 20 篇包含该语言的中文题解。
- 由用户选择题解后获取正文,并在右侧复用题解面板。
语言筛选表示“题解包含该语言”,不是“题解只包含该语言”。默认将 $...$ 和 $$...$$ 公式转换为可读纯文本;启用 hot100.enableLatexRendering 后使用 KaTeX 渲染。社区 Markdown 禁止原始 HTML,题解不在本地缓存。
设置
| 设置 |
默认值 |
说明 |
hot100.defaultLanguage |
python |
生成代码和筛选题解所用语言;Python 与 Python3 可独立选择。 |
hot100.solutionFolder |
problems |
存储目录下的代码文件夹。 |
hot100.enableAutoSplitEditor |
true |
题面和代码分栏打开。 |
hot100.problemFontSize |
15 |
题面 Webview 字号。 |
hot100.enableLatexRendering |
false |
使用 KaTeX 渲染中文题解公式;关闭时显示纯文本。 |
hot100.includeTemplates |
[] |
按语言插入生成文件头部的模板行。 |
hot100.leetcode.integrationMode |
vscode-leetcode-or-browser |
LeetCode 扩展/浏览器集成策略。 |
hot100.leetcode.extensionId |
LeetCode.vscode-leetcode |
可选 LeetCode 扩展 ID。 |
hot100.leetcode.username |
空 |
同步账号的用户名或主页 slug。 |
hot100.leetcode.site |
cn |
登录和同步站点:cn 或 com。中文题解固定来自 CN。 |
hot100.leetcode.syncOnStartup |
true |
同步过期后在启动时提示。 |
hot100.leetcode.syncIntervalHours |
24 |
同步提示间隔。 |
hot100.review.strategy |
low |
复习强度。 |
hot100.storage.defaultFolderName |
Hot100 |
Documents 下默认存储目录名。 |
hot100.storage.autoOpenWorkspace |
true |
自动把存储目录加入当前工作区。 |
完整类型、枚举和约束以 VS Code 设置页及 package.json 为准。
开发
要求 Node.js、npm 和 VS Code:
npm install
npm run import:leetcode
npm run create:solutions
npm run compile
code .
在 VS Code 中按 F5 启动 Extension Development Host,再运行 Hot100 Assistant: 操作中心。
本地 Web UI:
npm install
npm run import:leetcode
npm run serve:web
打开 http://localhost:5178。通过环境变量指定存储目录:
HOT100_STORAGE=/your/storage/path npm run serve:web
格式化检查:
npm run format
npm run format:check
打包与发布
npm run compile
npm run package:marketplace
code --install-extension hot100-assistant-<version>.vsix
发布前使用本地 VSIX 完成扩展激活、题目打开、中文题解和 LaTeX 开关验收,再运行:
npx @vscode/vsce login <publisher-id>
npm run publish:marketplace
package.json 中的 publisher 必须与 Marketplace publisher ID 一致。*.vsix 已被 Git 忽略,不应提交。
致谢与来源
中文题解的 LeetCode CN GraphQL 查询、题解 Webview/Markdown 展示和 LaTeX 预处理包含改编自 ccagml/leetcode-extension 的实现。上游采用 MIT License,版权声明为 Copyright (c) 2022-present ccagml。完整许可文本随仓库和 VSIX 收录于 THIRD_PARTY_NOTICES。
可选的登录、样例运行和提交能力由独立项目 LeetCode-OpenSource/vscode-leetcode(扩展 ID:LeetCode.vscode-leetcode)提供。
LeetCode 题面、代码片段、题解及相关商标归相应权利人所有。Hot100 Assistant 是非官方工具,与 LeetCode、ccagml/leetcode-extension 和 LeetCode-OpenSource/vscode-leetcode 均无隶属关系。
License
本项目采用 MIT License。第三方许可见 THIRD_PARTY_NOTICES。