leetcode-cli

doc Crates.io Crates.io LICENSE

Features

Building

sh cargo install leetcode-cli

Login

Please make sure you have logined in leetcode.com with chrome, the cookie plugin of leetcode-cil can work on both OSX and Linux, username and password are not required, and if you are on other platforms or your cookies just don't want to be catched, please checkout this.

Usage

Please make sure you have logined in leetcode.com with chrome, more info plz checkout this

```sh leetcode 0.2.3 clearloop udtrokia@163.com Here's to the crazy ones 👻

USAGE: leetcode [FLAGS] [SUBCOMMAND]

FLAGS: -d, --debug debug mode -h, --help Prints help information -V, --version Prints version information

SUBCOMMANDS: data Manage Cache [aliases: d] edit Edit question by id [aliases: e] exec Submit solution [aliases: x] list List problems [aliases: l] pick Pick a problem [aliases: p] stat Show simple chart about submissions [aliases: s] test Edit question by id [aliases: t] help Prints this message or the help of the given subcommand(s) ```

Example

For example, if your config is:

toml [code] lang = "rust" editor = "emacs"

1. pick

sh leetcode pick 1

```sh [1] Two Sum is on the run...

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.


Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1]. ```

2. edit

sh leetcode edit 1

```rust impl Solution { pub fn two_sum(nums: Vec, target: i32) -> Vec { use std::collections::HashMap; let mut m: HashMap = HashMap::new();

    for (i, e) in nums.iter().enumerate() {
        if let Some(v) = m.get(&(target - e)) {
            return vec![*v, i as i32];
        }

        m.insert(*e, i as i32).unwrap_or_default();
    }

    return vec![];
}

} ```

3. test

sh leetcode test 1

```sh

Accepted Runtime: 0 ms

Your input: [2,7,11,15], 9 Output: [0,1] Expected: [0,1]

```

4. submit

sh leetcode submit 1

```

Success

Runtime: 0 ms, faster than 100% of Rustonline submissions for Two Sum.

Memory Usage: 2.4 MB, less than 100% of Rustonline submissions for Two Sum.

```

Cookies

The cookie plugin of leetcode-cil can work on OSX and Linux, If you are on other platforms or your cookies just don't want to be catched, you can handwrite your LeetCode Cookies to ~/.leetcode/leetcode.toml

```toml

Make sure leetcode.toml file is placed at ~/.leetcode/leetcode.toml

[cookies] csrf = "..." session = "..." ```

For Example, if you're using chrome to login to leetcode.com.

Step 1

Open chrome and paste the link below to the chrome linkbar.

sh chrome://settings/cookies/detail?site=leetcode.com

Step 2

Copy the contents of LEETCODE_SESSION and csrftoken.

Step 3

Paste them to session and csrf.

```toml

Make sure leetcode.toml file is placed at ~/.leetcode/leetcode.toml

[cookies] csrf = "${csrftoken}" session = "${LEETCODE_SESSION}" ```

Programmable

If we want to filter leetcode questions using our own python scripts, what should we do?

For example, our config is:

```toml

Make sure leetcode.toml file is placed at ~/.leetcode/leetcode.toml

[storage] scripts = "scripts" ```

We write our python scripts:

```python

~/.leetcode/scripts/plan1.py

import json;

def plan(sps, stags): ## # print in python is supported, # if you want to know the data structures of these two args, # just print them ## problems = json.loads(sps) tags = json.loads(stags)

ret = []
tm = {}
for tag in tags:
    tm[tag["tag"]] = tag["refs"];

for i in problems:
    if i["level"] == 1 and str(i["id"]) in tm["linked-list"]:
        ret.append(str(i["id"]))

# return is `List[string]`
return ret

```

Then we can run filter as what we write now:

sh leetcode list -p plan1

Well done, enjoy it!

PR

PR is welcome, here it is.

LICENSE

MIT