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 ,一般預設情況下是啟用了的。
配置
安裝完成之後,可在
Perferences >> Plugins >> Tools >>leetcode plugin
中設定詳細賬号資訊。
如圖,詳細設定内容解析如下:
- 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圖示,點選即可出現小窗。
提示:清空生成檔案一定要慎重!!不然如果沒有使用git版本管理工具的話,很有可能找不回來檔案了!!
線上測試及送出
本地調試
本地調試,由于環境不一,設定方式也略有不同。且由于每個題目調試用例也不盡相同,是以一般不建議本地調試。但是如果一定想要實作本地調試的模版,可以參考官方說明文檔,對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進行驗證的代碼開始标記leetcode submit region begin(Prohibit modification and deletion)
-
:送出到leetcode進行驗證的代碼結束标記leetcode submit region end(Prohibit modification and deletion)
這兩個注釋标注了需要送出到leetcode的區域,這兩行注釋是不能被删除或者修改的,否則無法識别出送出的内容,如果多送出了其他代碼,leetcode會出現解答失敗,同樣區域内不能出現與解題無關的内容。
參考文章
文章1
文章2
文章3