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
相关产品推荐
相关产品推荐

