#leetcode #command-line #command-line-tool #command-line-interface #test-cases #leetcode-cli #leetcode-questions

app leetcode-runner-cli

一个用于从命令行执行和提交 LeetCode 问题的工具

1 个不稳定版本

0.2.71 2023年7月4日
0.2.7 2023年7月4日
0.2.6 2023年7月4日

#1272命令行工具

Apache-2.0

200KB
1.5K SLoC

leetcode-runner-cli

通过 CLI 界面执行 LeetCode 测试用例并提交您的解决方案

Crates.io GitHub license GitHub issues

Leetcode Runner CLI Banner

免责声明:这不是官方 LeetCode 工具。我以任何方式都与 LeetCode 无关。此工具未获得 LeetCode 的认可。


安装

使用 Cargo

  1. 如果您已将 Cargo 安装到您的系统,则可以使用以下命令安装该工具。

    cargo install leetcode-runner-cli
    

使用预构建的二进制文件

  1. 转到 发行版部分 并下载适用于您的系统的相应二进制文件。

  2. 将二进制文件放置在适当的位置,并将位置添加到您的 PATH 环境变量中。

从源代码构建

  1. 此处安装 rust 以编译源代码。

  2. 克隆存储库并移动到存储库目录。

    git clone https://github.com/dvishal485/leetcode-runner-cli.git
    cd leetcode-runner-cli
    
  3. 编译和安装二进制文件。

    cargo install --path .
    

平台特定说明

根据您的平台,您可能需要安装某些工具才能成功编译。

  • 在 Ubuntu 系统上,您可能需要执行 apt-get install pkg-config openssl-dev -y 以成功编译程序。
  • Windows 用户可以直接使用。

用法

  1. 设置环境变量 LC_COOKIE 为您的 LeetCode 会话 Cookie。您可以在互联网上搜索如何在您的系统上设置环境变量。

    您可以通过登录 LeetCode 并检查浏览器开发者工具中的请求头中的 Cookie 来获取会话 Cookie。

    请确保将您的 Cookie 放在双引号中。

     export LC_COOKIE="csrftoken=abcdefgh;LEETCODE_SESSION=ijklmnopqrstuvwxyz;"
    
  2. 执行工具并验证您的身份验证。

    leetcode-runner-cli -a
    

命令

leetcode-runner-cli [COMMAND] [OPTIONS <option>]
命令 描述 参数
-h, --help 打印帮助信息 -
-V, --version 打印版本信息 -
-a,auth 使用 LeetCode 进行身份验证 -
-d,daily 获取每日挑战问题 -
-q,question 问题标题 / 获取的 URL [QUESTION_NAME] (必需)
-r,run 使用默认/指定的测试用例执行文件 -f [FILE] -t [TESTCASE_FILE]
-s,submit 测试用例通过后提交解决方案 -f [FILE]
-fs,fast-submit 提交解决方案时无需检查测试用例 -f [FILE]
-段落,打包 将你的解决方案和问题打包到一个目录中 -f [FILE]

你可以通过传递 --help 来查看命令的使用方法。

文件更改

如果你通过CLI(使用 -d-q)获取问题,那么工具将自动在模板代码中添加所需更改。

但如果你使用自己的代码,则需要做出以下更改

你提交给LeetCode的文件不应该包含驱动代码,如主函数或结构定义。但不需要手动删除。工具将自动删除驱动代码并将解决方案提交到LeetCode。你所需要做的就是将分隔符 #LCSTART#LCEND 放在解决方案文件中的注释中,并在文件中任意位置放置LeetCode问题链接。

例如

struct Solution;

// #LCSTART

impl Solution {
    pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
        // real magic here
    }
} // #LCEND https://leetcode.com/problems/two-sum/ 

fn main() {
 // can have anything which may assist you
}
  • 如果未找到链接,工具将退出并显示错误信息。
  • 如果未找到起始分隔符,工具将运行到结束分隔符。
  • 如果未找到结束分隔符,工具将运行到文件末尾。
  • 如果两个分隔符都没有找到,工具将默认整个文件。

示例用法

文件名不需要通过 --file-f 明确指定,因为它是一个可选字段。有关更多信息,请参阅下面的说明

  • 获取问题 koko-eating-bananas

    leetcode-runner-cli -q koko-eating-bananas
    

    leetcode-runner-cli -q https://leetcode.com/problems/koko-eating-bananas/
    
  • 运行 src/main.rs 并使用默认测试用例运行问题 koko-eating-bananas

    leetcode-runner-cli -r --file /src/main.rs
    
  • 使用自定义测试用例文件运行 src/main.rs

    leetcode-runner-cli -r -t testcase.txt --file /src/main.rs
    
  • 将 src/main.rs 提交到 LeetCode

    leetcode-runner-cli -s --file /src/main.rs
    

    说明:这将首先执行默认测试用例(或如果提供,指定的测试用例),然后只有当测试用例通过时才将解决方案提交到LeetCode,作为防止提交错误解决方案的预防措施。

  • 不运行测试用例将 src/main.rs 提交到 LeetCode

    leetcode-runner-cli -fs -f /src/main.rs
    
  • 将你的代码和问题打包到目录中以保持进度或上传到Git

    leetcode-runner-cli -p --file /src/main.rs
    

说明

  1. 代码文件应包含问题的链接,如下面的示例。
  2. 如果你不指定文件位置,则工具将在当前目录中搜索代码并将其默认使用。
  3. 如果有多个文件,则工具将使用名为 main 的文件或如果没有 main 文件,则使用它找到的第一个文件。

因此,在上面的示例中,你可以简单地执行 cd ./src 然后运行以下命令

  • 使用自定义测试用例执行: leetcode-runner-cli -r -t testcase.txt
  • 使用默认测试用例执行: leetcode-runner-cli -r
  • 提交: leetcode-runner-cli -s
  • 不运行测试用例提交: leetcode-runner-cli -fs
  • 打包代码: leetcode-runner-cli -p

支持的语言

这是一个通用的模块,可以用来运行任何语言。它只需要将 leetcode 上的 language 和文件的 extension 进行映射。

目前,默认添加了以下语言:Rust、Python3、C++、Java、C、JavaScript、Go、Kotlin、Swift、TypeScript、C#、Ruby、Scala、PHP、Racket、Erlang、Elixir、Dart。

根据需求,可以手动添加更多语言,方法是在 src/file_parser/language.rs 文件中更改枚举值,具体请参考此处



依赖项

~5–17MB
~256K SLoC