19 个版本 (7 个稳定版本)
1.2.6 | 2024年3月28日 |
---|---|
1.2.5 | 2024年3月25日 |
1.2.4 | 2023年9月9日 |
1.0.2 | 2022年1月17日 |
0.1.16 | 2020年11月19日 |
#320 in 命令行工具
115KB
3K SLoC
如果你使用 neovim,尝试这个 Neovim 插件 leetup.nvim
解决 Leetcode 问题
安装
- MacOS
brew install leetup
- Linux
从 发行版 下载。解压文件并设置 PATH。 - Cargo
cargo install leetup
- Windows
从 发行版 下载。解压 x86_64 windows 目标文件。
注意:您需要将
leetup.exe
添加到 PATH 以从命令提示符访问。
快速入门
-
使用 Cookie 登录:
leetup user -c
- 您需要先在 leetcode.com 上登录。
- 从浏览器中 cookie 存储中复制
csrftoken
和LEETCODE_SESSION
。
-
选择一个问题:
leetup pick -l python 1
-
测试一个问题:
leetup test two-sum.py -t "[1,2]\n3"
或通过 stdin 重定向测试数据leetup test 3sum.java -t << END [1,-1,0] [0, 1, 1, 1, 2, -3, -1] [1,2,3] END
-
提交一个问题:
leetup submit two-sum.py
-
列出/显示问题:
leetup list
- 通过关键字搜索:
leetup list <keyword>
- 查询简单:
leetup list -q e
- 按 ID、标题、难度排序:
leetup list -qE -oIdT
- 通过关键字搜索:
注入代码片段
您可以将常用代码片段注入到生成的代码文件中的特定位置。例如:每种语言的常用库导入可以放入配置中。《Leetup》会将其提取并插入到生成的文件中。
配置
创建 ~/.leetup/config.json
并根据您的喜好进行自定义
{
"lang": "java",
"inject_code": {
"rust": {
"before_code": ["use std::rc::Rc;", "use std::collections::{HashMap, VecDeque};", "use std::cell::RefCell;"],
"before_code_exclude": ["// Test comment", "// Test code"],
"after_code": "\nstruct Solution; \n\nfn main() {\n let solution = Solution::$func();\n\n}\n",
"before_function_definition": null
},
"java": {
"before_code": "import java.util.*;",
"before_code_exclude": ["// Test comment", "// Test code"],
"after_code": null,
"before_function_definition": null
},
"python3": {
"before_code": "import math",
"before_code_exclude": ["# Test comment", "# Test code"],
"after_code": ["if __name__ = \"__main__\":", " solution = Solution()"],
"before_function_definition": null
}
}
}
生成的Rust代码看起来像这样
// @leetup=custom
// @leetup=info id=1 lang=rust slug=two-sum
/*
* [SNIP]
*/
// @leetup=custom
// @leetup=inject:before_code_ex
// Test comment
// Test code
// @leetup=inject:before_code_ex
// @leetup=code
// @leetup=inject:before_code
use std::cell::RefCell;
use std::collections::{HashMap, VecDeque};
use std::rc::Rc;
// @leetup=inject:before_code
impl Solution {
pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {}
}
// @leetup=code
// @leetup=inject:after_code
// This is helpful when you want to run this program locally
// and avoid writing this boilerplate code for each problem.
struct Solution;
fn main() {
let solution = Solution::two_sum();
}
// @leetup=inject:after_code
在测试和提交到LeetCode时,只有位于 @leetup=code
之间的代码块会被提交
// @leetup=inject:before_code
use std::cell::RefCell;
use std::collections::{HashMap, VecDeque};
use std::rc::Rc;
// @leetup=inject:before_code
impl Solution {
pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
}
}
其他将被忽略!
为Pick配置钩子脚本
在代码生成前后运行脚本。当您想要在生成的文件周围获得更多便捷性时非常有用,例如:创建目录、将生成的文件移动到目录中、重命名等。配置中的 @leetup=working_dir
将被替换为 working_dir
。
@leetup=problem
将被替换为当前问题标题,例如 two-sum
。
{
"lang": "rust",
"inject_code": {
...SNIP...
},
"pick_hook": {
"rust": {
"working_dir": "~/lc/rust",
"script": {
"pre_generation": ["cd @leetup=working_dir; mkdir -p @leetup=problem"],
"post_generation": ["mv @leetup=working_dir/@leetup=problem.rs @leetup=working_dir/@leetup=problem/Solution.rs"]
}
},
"java": {
"working_dir": "~/lc/java",
"script": {
"pre_generation": ["cd @leetup=working_dir", "mvn archetype:generate -DartifactId=@leetup=problem -DgroupId=leetup -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false"],
"post_generation": ["mv @leetup=working_dir/@leetup=problem.java @leetup=working_dir/@leetup=problem/src/main/java/App.java"]
}
}
}
}
致谢
本项目灵感来源于:[https://github.com/leetcode-tools/leetcode-cli](https://github.com/leetcode-tools/leetcode-cli)
依赖项
~14–29MB
~456K SLoC