当前位置: 首页 > news >正文

leetcode 简单

1. 两数之和

两数之和

方法1:暴力枚举
两次for 循环,记录索引和值,找到合适的值然后返回

方法2:使用哈希表
第一次for循环的时候,就可以使用哈希表记录key的value,可以实现时间复杂度是1,要分清楚哈希表的key和value的对应关系

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        # method 1 暴力枚举
        # for index1, i in enumerate(nums):
        #     for index2, j in enumerate(nums):
        #         if i+j == target and index1 != index2:
        #             return [index1, index2]

        #  method 2 暴力枚举
        # for i in range(len(nums)):
        #     for j in range(len(nums)):
        #         if i!=j and nums[i] + nums[j] == target:
        #             return [i, j]
        # method 3 使用哈希表,快速寻找是否存在目标元素
        hashtable = dict()
        for i, num in enumerate(nums):
            if target - num in hashtable:
                return [hashtable[target - num ], i]
            else:
                hashtable[num] = i

2. 验证回文串

验证回文串

将所有大写字符转换为小写字符、并移除所有非字母数字字符
解题思路:双指针

Python中处理字符串之isalpha()方法的使用:用于判断字符串是否全部由字母组成。string.isalpha(),string是要检查的字符串。该方法返回True或False,表示字符串是否全部由字母组成

Python中处理字符串之isalnum()方法的使用:其作用是检查一个字符串是否由字母或数字组成。只要字符串中包含了非字母非数字的字符,该函数就返回False,空字符串也会返回False.也就是说,字符串中只在由字母、一种语言的字符、数字或字母及数字组成的情况下才返回True.

  1. isalpha() 只能判断字符串是否只包含字母字符(包括字母和其他语言的字符),而不包括数字或其他特殊字符。数字+字母是false
  2. isalnum() 则可以判断字符串是否同时包含字母和数字字符,只有当字符串中包含字母和数字字符时才会返回 True,否则返回 False。含有特殊字符才是False

区别参考链接

  1. upper() 方法将字符串转换为大写字母
  2. lower() 方法将字符串转换为小写字母

双指针解法:

class Solution:
    def isPalindrome(self, s: str) -> bool:
        sgood = "".join([i.lower() for i in s if i.isalnum()])
        n = len(sgood)
        left, right = 0 , n-1
        while left < right:
            if sgood[left] != sgood[right]:
                return False
            else:
                left += 1
                right -=1
        return True

优雅解法:

class Solution:
    def isPalindrome(self, s: str) -> bool:
        sgood = "".join(ch.lower() for ch in s if ch.isalnum())
        return sgood == sgood[::-1]

相关文章:

  • type may not be empty [type-empty]
  • 飞天使-学以致用-devops知识点4-SpringBoot项目CICD实现(实验失败,了解大概流程)
  • 武器大师——操作符详解(下)
  • docker 转为docker-compose(composerize 命令)
  • OpenCV下载与变量配置
  • 苍穹外卖学习 Day10 Day11 Day12
  • Unity(第十四部)光照
  • 《TCP/IP详解 卷一》第7章 防火墙和NAT
  • iOS消息发送流程
  • Vue.js中的$nextTick
  • rsync远程同步
  • django-paramiko远程服务器和文件管理(五)
  • 逆向案例四、进阶,爬取精灵数据咨询前五十页数据
  • [java] 23种设计模式之适配器模式
  • React Developer Tools带你掌握9个React组件调试技巧,十分钟学会
  • docekr 安装 Naocs
  • docker通过dockerfile安装sftp教程。
  • 【学习版】Microsoft Office 2021安装破解教程
  • SpringBoot源码解读与原理分析(三十八)SpringBoot整合WebFlux(一)WebFlux的自动装配
  • AGI概念与实现
  • 女儿被偷拍后,一个父亲的战斗
  • 苏炳添任暨南大学体育学院院长
  • 巴基斯坦最近“比较烦”:遣返阿富汗人或致地区局势更加动荡
  • 全国首个古文学习AI大模型在沪发布,可批阅古文翻译
  • 南宁市委常委、组织部部长陈川已任广西医科大学党委书记
  • 嫦娥五号月球样品将借给这些国家机构