You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode输入解析方法求助:Python新手遇格式转换难题

解决LeetCode输入格式解析问题

首先明确:在LeetCode提交代码时,不需要自己处理输入解析。平台会自动将nums列表和target整数作为参数传入你写的twoSum函数,你只需要实现函数逻辑即可。比如两数之和的函数签名是:

from typing import List

def twoSum(nums: List[int], target: int) -> List[int]:
    # 你的逻辑代码

如果是本地测试需要模拟LeetCode的输入格式,以下是两种可靠的解析方法:

方法1:使用ast.literal_eval安全解析

ast.literal_eval可以安全地将字符串形式的列表转换为Python列表,避免eval的安全风险:

import ast

# 模拟LeetCode输入格式
input_str = input().strip()

# 提取nums列表部分
nums_start = input_str.find('[')
nums_end = input_str.find(']') + 1
nums = ast.literal_eval(input_str[nums_start:nums_end])

# 提取target值
target_start = input_str.find('target=') + 7
target = int(input_str[target_start:])

print(nums)  # 输出: [2,7,11,15]
print(target)  # 输出: 9

方法2:用正则表达式提取所有数字

适合简单场景,直接提取输入中的所有整数,前n个为数组元素,最后一个为target:

import re

input_str = input().strip()
# 匹配所有整数(包括负数)
all_numbers = list(map(int, re.findall(r'-?\d+', input_str)))
nums = all_numbers[:-1]
target = all_numbers[-1]

print(nums)  # 输出: [2,7,11,15]
print(target)  # 输出: 9

你之前的方法问题所在

通过奇数索引取字符的逻辑完全不适用:

  • 遇到多位数(如11)会被拆成单个字符,导致数据错误
  • 会误把逗号等符号加入列表
  • LeetCode平台的运行时错误是因为你额外写了input()读取逻辑,平台本身会自动传递参数,不需要你手动处理输入。

内容的提问来源于stack exchange,提问作者Seshadri_krish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:05:19