[LeetCode - Python]167.两数之和 II (Medium);125. 验证回文串(Easy)

1.题目:

167.两数之和 II (Medium)
[LeetCode - Python]167.两数之和 II (Medium);125. 验证回文串(Easy)_第1张图片

1.代码:

class Solution:
    def twoSum(self, numbers: List[int], target: int) -> List[int]:
        #由于数组是已按非递减顺序排列,因此可以对撞双指针;
        le , ri= 0 , len(numbers)-1
        while le < ri :
            Sum = numbers[le] + numbers [ri]
            if Sum == target :
                return[le+1,ri+1]
            elif Sum < target :
                le+=1
            else :
                ri-=1 

[LeetCode - Python]167.两数之和 II (Medium);125. 验证回文串(Easy)_第2张图片

2.题目

125. 验证回文串(Easy)
[LeetCode - Python]167.两数之和 II (Medium);125. 验证回文串(Easy)_第3张图片

2.代码:

1.自己第一次写:

class Solution:
    def isPalindrome(self, s: str) -> bool:
        snew = list(filter(str.isalnum,s.lower()))
        # s.lower() 全部变小写
        # s.upper() 全部变大写
        # filter(func,iteral)内置函数,用于过滤序列
        # filter(str.isalpha,s)             # 只保留字母
        # filter(str.isalnum,s)             # 只保留数字和字母
        # filter(str.digit,s)               # 只保留数字
        left ,right = 0 ,len(snew)-1
        while left < right :
            if snew[left] != snew[right]:
                return False
            else :
                left+=1
                right-=1
        return True

[LeetCode - Python]167.两数之和 II (Medium);125. 验证回文串(Easy)_第4张图片

2.看题解

class Solution:
    def isPalindrome(self, s: str) -> bool:
        # 普通双指针
        left , right = 0 ,len(s)-1
        while left < right :
            if not s[left].isalnum():
                left+=1
                continue
            if not s[right].isalnum():
                right-=1
                continue
            if s[left].lower() == s[right].lower():
                left+=1
                right-=1
            else:
                return False
        return True


[LeetCode - Python]167.两数之和 II (Medium);125. 验证回文串(Easy)_第5张图片

你可能感兴趣的:(leetcode,python,算法)