您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
一键复制所有样例输入
您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
- // ==UserScript==
- // @name LeetCode OneInput
- // @namespace https://leetcode-cn.com/
- // @version 1.1
- // @description 一键复制所有样例输入
- // @author Mcginn
- // @match https://leetcode-cn.com/problems/*
- // @grant GM_registerMenuCommand
- // @grant GM_setClipboard
- // @grant GM_addStyle
- // @grant GM_getResourceText
- // @resource notycss https://cdn.jsdelivr.net/npm/noty@3.1.4/lib/noty.min.css
- // @require https://cdn.jsdelivr.net/npm/noty@3.1.4/lib/noty.min.js
- // @require https://cdn.jsdelivr.net/npm/jquery@v3.4.1/dist/jquery.min.js
- // @run-at document-end
- // ==/UserScript==
- (function() {
- 'use strict';
- GM_addStyle(GM_getResourceText('notycss'));
- function isDidit(character) {
- return '0' <= character && character <= '9';
- }
- function parseInput(problemDescription) {
- var idx = 0, inputs = new Array();
- while (idx < problemDescription.length) {
- if ('[' == problemDescription[idx]) {
- var cnt = 0, indexStart = idx;
- while (idx < problemDescription.length) {
- switch (problemDescription[idx++]) {
- case '[':
- ++cnt;
- break;
- case ']':
- --cnt;
- break;
- default:
- break;
- }
- if (0 == cnt)
- break;
- }
- inputs.push(problemDescription.substring(indexStart, idx));
- } else if ('\"' == problemDescription[idx]) {
- var indexStart = idx++;
- while (idx < problemDescription.length && problemDescription[idx] != '\"') {
- ++idx;
- }
- inputs.push(problemDescription.substring(indexStart, ++idx));
- } else if ('0' <= problemDescription[idx] && problemDescription[idx] <= '9') {
- var indexStart = idx;
- while (idx < problemDescription.length && isDidit(problemDescription[idx])) {
- ++idx;
- }
- var indexEnd = idx;
- var strInput = problemDescription.substring(indexStart, indexEnd);
- inputs.push(strInput);
- } else {
- ++idx;
- }
- }
- return inputs
- }
- function parseExampleInput(problemDescription) {
- var arrayInput = new Array();
- var regexpInput = /输入[::]((.|\n)+?)输出/g
- var ret;
- while (ret = regexpInput.exec(problemDescription)) {
- var inputs = ret[1];
- console.log('inputs = ' + inputs);
- arrayInput = arrayInput.concat(parseInput(inputs));
- }
- var strInput = arrayInput.join('\n');
- return strInput;
- }
- function copyAllTestCases() {
- new Noty({
- type: 'info',
- layout: 'topRight',
- text: 'Trying to find and copy all testcases',
- timeout: 2000
- }).show();
- var selector = 'div.description__2b0C';
- if ($(selector) && $(selector).text().length > 0) {
- var exampleInputStr = parseExampleInput($(selector).text());
- GM_setClipboard(exampleInputStr);
- new Noty({
- type: "success",
- layout: "topRight",
- text: "Have copy all testcases: \n" + exampleInputStr,
- timeout: 5000
- }).show();
- return true;
- } else {
- return false;
- }
- }
- var checkExist = setInterval(
- function() {
- if (copyAllTestCases()) {
- clearInterval(checkExist);
- }
- }, 2000);
- GM_registerMenuCommand("一键复制", copyAllTestCases);
- })();