// ==UserScript== // @name LeetCodeCopyTestcase2 // @namespace https://leetcode.cn/ // @version 0.1 // @description 自动将 LeetCode 测试用例转化为 SQL 和 Pandas 语句 // @author wangxm // @match https://leetcode.cn/problems/* // @match https://leetcode-cn.com/submissions/detail/* // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; // 获取表的对象集合信息 let createTableSQL = ""; let insertSQL = ""; let dropTableSQL = ""; let pandasCode = ""; const tableInfos = JSON.parse(pageData.submissionData.input).headers; const tableRows = JSON.parse(pageData.submissionData.input).rows; // 生成表创建和删除语句 for (const name in tableInfos) { const columns = tableInfos[name].map(col => `${col} VARCHAR(200)`); createTableSQL += `CREATE TABLE IF NOT EXISTS ${name} (${columns.join(", ")});\n`; dropTableSQL += `DROP TABLE IF EXISTS ${name};\n`; // 生成 Pandas 代码 const pandasColumns = tableInfos[name].map(col => `"${col}"`); const pandasData = tableRows[name].map(row => `[${row.map(value => value === null ? "None" : `"${value}"`).join(", ")}]`); pandasCode += `import pandas as pd\n${name}_df = pd.DataFrame(columns=[${pandasColumns.join(", ")}], data=[${pandasData.join(", ")}])\n\n`; } // 处理数据并生成插入语句 for (const tableName in tableRows) { tableRows[tableName].forEach(row => { const values = row.map(value => value === null ? "NULL" : `"${value}"`); insertSQL += `INSERT INTO ${tableName} VALUES (${values.join(", ")});\n`; }); } // 添加到页面上 $("#details-summary").append(` `); $("#sql").val(dropTableSQL + createTableSQL + insertSQL); $("#pandas").val(pandasCode); // 添加滑动及其处理 $("#toggle").click(function() { const isHidden = $("#sql").css("display") === "none"; $("#sql").css("display", isHidden ? "block" : "none"); $("#pandas").css("display", isHidden ? "none" : "block"); $(this).val(isHidden ? "隐藏" : "查看"); }); $("#copy-sql").click(function() { const sqlTextarea = document.getElementById("sql"); sqlTextarea.select(); document.execCommand("Copy"); alert("SQL 已复制好,可贴粘。"); }); $("#copy-pandas").click(function() { const pandasTextarea = document.getElementById("pandas"); pandasTextarea.select(); document.execCommand("Copy"); alert("Pandas 代码已复制好,可贴粘。"); }); })();