天天看點

LeetCode editor開箱體驗——在 IntelliJ IDE中刷 Leetcode 題目LeetCode editor開箱體驗——在 IntelliJ IDE中刷 Leetcode 題目

LeetCode editor開箱體驗——在 IntelliJ IDE中刷 Leetcode 題目

最近開始在刷 LeetCode 上的題目,在經過一段時間的的網頁端上寫代碼打卡挑戰,但是網頁端的寫代碼體驗原始得讓習慣了強大IDE智能補充的我無比痛苦😖。本着改善工具使用體驗,提高個人學習效率(裝逼😎是第一生産力)的原則,我開始搜尋有沒有辦法能讓我在我自己比較習慣的 IntelliJ IDE中刷 Leetcode上的題目。于是我找到了讓我脫離苦海的神奇——LeetCode editor

簡介

LeetCode editor是一款非常優秀的開源插件👍🏻👍🏻,它支援擷取Leetcode 國際版🌎和中國版🇨🇳,但是不能同時登陸兩個版本的賬号!此外,它支援在所有IntelliJ IDE中安裝使用,例如: IntelliJ IDEA、PhpStorm、WebStorm、PyCharm、RubyMine、AppCode、CLion GoLand、DataGrip、Rider MPS、Android Studio等等。

安裝

Leetcode是釋出在官方插件中供所有人免費使用,是以它的安裝方式也很簡單,直接在IDE的插件庫中搜尋 leetcode editor,便可以進行安裝!插件市場路徑如下:

Preferences >> Plugins >> Marketplace

安裝完成後,預設會詢問你是否重新開機IDE,沒有的話,手動重新開機一下也是可以的,重新開機之後可以在

Perferences >> Plugins >>Installed

中檢視已安裝插件的狀态,你可以确定一下是否啟用了leetcode editor ,一般預設情況下是啟用了的。

LeetCode editor開箱體驗——在 IntelliJ IDE中刷 Leetcode 題目LeetCode editor開箱體驗——在 IntelliJ IDE中刷 Leetcode 題目

配置

安裝完成之後,可在

Perferences >> Plugins >> Tools >>leetcode plugin

中設定詳細賬号資訊。

LeetCode editor開箱體驗——在 IntelliJ IDE中刷 Leetcode 題目LeetCode editor開箱體驗——在 IntelliJ IDE中刷 Leetcode 題目

如圖,詳細設定内容解析如下:

  • URL:leetcode-cn.com代表🇨🇳中國版,leetcode.com代表🌎國際版。
  • Code Type:就是選擇實作算法的程式設計語言。
  • LoginName:賬戶綁定的郵箱或手機号
  • Password:就是你的密碼喏
  • TempFilePath:選擇你想要把生成的代碼檔案放在什麼位置
  • JCEFFilePath:不需要修改,保持預設就好
  • Custom Template:如果你想自定義生成的代碼檔案的模版格式,即修改

    CodeFileName

    CodeTemplate

    兩項内容,那你一定要記得勾選上這個選項,不然你對下面兩項内容做任何修改都不會生效的。(我會告訴你我因沒有勾選這個傻傻改了無數遍嗎?😬)
  • Plugin update:允許插件更新
  • English content:題目内容的描述語言修改為英文
  • CodeFileName:生成的代碼檔案的命名格式
  • CodeTemplate:生成的代碼檔案的内容的規範格式
  • TemplateConstant:對相關API的解釋說明

上圖CodeFileName:

[${question.frontendQuestionId}]${question.title}

是預設的命名模版,但是使用中文命名檔案的方式基本是不能在本地編譯。如果想在本地編譯運作生成的代碼檔案,可以參考下面的模版:

CodeFileName:

LT_${question.frontendQuestionId}_$!velocityTool.camelCaseName(${question.titleSlug})

上邊模版是先擷取其英文标題然後通過提供的API轉換為駝峰命名法

CodeTemplate:
// ${question.frontendQuestionId} ${question.title}
// ${question.titleSlug}

${question.content}

${question.code}
           

使用

參照上文中配置方法配置完成之後,可在項目界面的右下角找到Leetcode圖示,點選即可出現小窗。

LeetCode editor開箱體驗——在 IntelliJ IDE中刷 Leetcode 題目LeetCode editor開箱體驗——在 IntelliJ IDE中刷 Leetcode 題目

提示:清空生成檔案一定要慎重!!不然如果沒有使用git版本管理工具的話,很有可能找不回來檔案了!!

線上測試及送出

LeetCode editor開箱體驗——在 IntelliJ IDE中刷 Leetcode 題目LeetCode editor開箱體驗——在 IntelliJ IDE中刷 Leetcode 題目

本地調試

本地調試,由于環境不一,設定方式也略有不同。且由于每個題目調試用例也不盡相同,是以一般不建議本地調試。但是如果一定想要實作本地調試的模版,可以參考官方說明文檔,對CodeTemplate進行自定義(讀者:實際上是你不知道怎麼寫吧?🙄;我:😬🤫),以此來實作自動生成相關的測試執行個體,下面給出Java版的官方參考CodeTemplate:

${question.content}
  
  package com.shuzijun.leetcode.editor.en;
  public class $!velocityTool.camelCaseName(${question.titleSlug}){
      public static void main(String[] args) {
           Solution solution = new $!velocityTool.camelCaseName(${question.titleSlug})().new Solution();
      }
      ${question.code}
  }
           

其實從上面的官方版本中也可以看出,它隻是實作了一些比較統一的代碼格式,并沒有實作自動從網站擷取具體的測試用例以友善再本地調試。是以即時按上文實施,具體的測試用例代碼還是得自己每一次手動寫,較為繁瑣。如果開發者大大能看到此文,能在以後的版本實作自動擷取測試用例在本地調試就太完美了。

特殊注釋

需要注意的是,在生成的代碼裡包含兩個注釋:

  • leetcode submit region begin(Prohibit modification and deletion)

    :送出到leetcode進行驗證的代碼開始标記
  • leetcode submit region end(Prohibit modification and deletion)

    :送出到leetcode進行驗證的代碼結束标記

這兩個注釋标注了需要送出到leetcode的區域,這兩行注釋是不能被删除或者修改的,否則無法識别出送出的内容,如果多送出了其他代碼,leetcode會出現解答失敗,同樣區域内不能出現與解題無關的内容。

參考文章

文章1

文章2

文章3