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