0921 去哪儿旅行笔试
三道编程,都是核心代码真香,比某某题都写不清,还要自己处理输入的好多了
第一题:比较版本号 100
class Solution:
def compareVersion(self , version1: str, version2: str) -> int:
# write code here
nums1 = version1.split('.')
nums2 = version2.split('.')
if not nums1[-1].isdigit():
nums1 = nums1[:-1]
if not nums2[-1].isdigit():
nums2 = nums2[:-1]
n1, n2 = len(nums1), len(nums2)
while n1 < 3:
nums1 += ["0"]
n1 += 1
while n2 < 3:
nums2 += ["0"]
n2 += 1
#print(nums1,nums2)
for i in range(3):
if nums1[i] < nums2[i]:
return -1
elif nums1[i] > nums2[i]:
return 1
return 0 第二题 邻接矩阵计算从城市0到城市n-1 中转旅行的最小费用,没找出遗漏了什么情况,只过了60,请大佬指点。 def dfs(i,res,dep): if dep>len(matrix):return 1e9 if i == len(matrix)-1:return res tmp = 1e9 for j in range(len(matrix)): if matrix[i][j]==-1 or i==j:continue tmp = min(tmp, dfs(j,res+matrix[i][j],dep+1)) return tmp dfs(0,0,0)第三题 执行编辑指令的结果abcd\delete{2} ->ab(删除指令前2个字符) 过了82,请大佬指正。
\\输出字符\
指令错误,则截断输出abc\d ->abc
class Solution:
def transform(self , input: str) -> str:
# write code here
n = len(input)
l,r = 0,0
while l < n and r < n:
while l < n and input[l].isalpha(): l += 1
if l<n-1 and not input[l+1].isalpha():
input = input[:l+1]+input[l+2:]
l+=1
n -= 1
continue
if input[l:l+8]=='\delete{' and input[l+8].isdigit() and input[l+9]=='}':
num = int(input[l+8])
if l>= num:
input = input[:l-num] + input[l+10:]
n -= 10 + num
else:
input = input[l+10:]
n -= 10 + l
else:
return input[:l]
return input