LeetCode 《1.两数之和》+《125.验证回文串》

 

题目1:

LeetCode 《1.两数之和》+《125.验证回文串》_第1张图片

思路:

① 考虑 target-num1=num2 的形式来进行判断

② 用字典来存储nums,k存储num,v存储num的index

③ 使用字典时,并非全部存储完再进行①的判断,而是存一个进行一次判断,这样时间复杂度为N

③ 代码中要先进行判断,再进行字典存num:

     如果先存值,那么 if target-num1 in d 进行判断时,num1已经存储到了 d 中,若target为4,num1为2,那么就发生了错误。因此应该判断(target-即将存储进字典的num1)的值即num2,是否已经存在于字典中。在的话,直接返回结果;如果不在,OK将num1及其index存储到字典里

④ 技巧是用到python的 enumerate(List) 枚举函数,for i,num in enumerate(list1) ,可以同时遍历list的值、index

解:

class Solution(object):
    def twoSum(self, nums, target):
        d={}
        for i,num in enumerate(nums):
            if target-num in d:
                return [i,d[target-num]]
            d[num]=i

LeetCode 《1.两数之和》+《125.验证回文串》_第2张图片

 

题目125

LeetCode 《1.两数之和》+《125.验证回文串》_第3张图片

思路:

 

① 将给定的字符串中除了字母数字以外的字符去掉,然后可以用''空字符将过滤后的一段一段的字符串连接起来

② 由于忽略大小写,所以将字符串再统一转换为小写

③ 上面的得到的字符串再与自己的逆序进行比较即可:s==s[::-1]

 

 

解:

class Solution:
    def isPalindrome(self, s: str) -> bool:
        s = ''.join(filter(str.isalnum,s)).lower()
        return s==s[::-1]

分析:

① str.join() 将join内的元素用str来进行连接,''为空字符

② filter(xxx,yyy)  xxx是判断函数,yyy是xxx的判断对象,函数判断结果为TRUE的话则以List方式返回yyy

③ str.lower() 小写化, str.isalnum 判断str是否为数字字母的组合,isalnum后面有无括号随缘吧。

 

 

 

你可能感兴趣的:(算法,算法&数据结构の笔记)