python 测试开发岗 笔面试编程题

题目网址:leetcode

1. 两数之和

解题思路在我的这篇博客里写过

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        # 字典能很好的直接访问到,哪个元素在,哪个元素不在,而且还能帮你存放一个附加的value值
        map_dict = {
   }  # 数值:下标
        for i, num in enumerate(nums):
            if target-num in map_dict:
                return [i, map_dict[target-num]]
            else:
                map_dict[num] = i

3. 无重复字符的最长子串

滑动窗口,类似的题目还有绳子覆盖最多的点数
在这里插入图片描述

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        # 滑动窗口问题
        l,r = 0,0 # 定义窗口的左右边界
        maxn = 0 # 记录最大值

        while l <= len(s)-1: # 左边界可以一直试到最后一个位置
            while (r+1 <= len(s)-1) and (s[r+1] not in s[l:r+1]): # r的增加不能超过右边界
                r+=1

            # 右边界停留在了合适的位置上,计算一下当前的长度吧
            if r-l+1 > maxn:
                maxn = r-l+1

            l+=1 # 左边界滑动一格
            
        return maxn

20. 有效的括号

仍然是配对问题

class Solution:
    def isValid(self, s: str) -> bool:
        # 要考虑到字符嵌套的情况"{[]}"
        
        # 设置一个字典,存放映射关系,“右”:“左”
        map_dict = {
   
                    ')':'(', 
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值