• leetcode——680.验证回文字符串2


    做了好久哦,一个多小时了都,才纠正过来。

    双指针!

    class Solution:
        def validPalindrome(self, s: str) -> bool:
            if s==s[::-1] :
                return True
            i,j=0,len(s)-1
            while i<j:
                if s[i]!=s[j]:
                    t=s[:i]+s[i+1:]
                    if t!=t[::-1]:
                        q=s[:j]+s[j+1:]
                        if q!=q[::-1]:
                            return False
                        else:
                            return True
                    else:
                        return True
                else:
                    i+=1
                    j-=1
    执行用时 :96 ms, 在所有 Python3 提交中击败了85.58%的用户
    内存消耗 :14.1 MB, 在所有 Python3 提交中击败了5.22%的用户
     
    看看人家60ms的范例:
    思路一样,但是就是比我简洁快捷明了:
    class Solution:
        def validPalindrome(self, s: str) -> bool:
            if s == s[::-1]:
                return True
            
            q = s[::-1]
            for i in range(len(s)):
                if s[i]!= q[i]:
                    if s[:len(s)-i-1]+s[len(s)-i:] == q[:i]+q[i+1:] or q[:len(s)-i-1]+q[len(s)-i:] == s[:i]+s[i+1:]:
                        return True
                    else:
                        return False

    人家先将s的倒序存为q:

    q = s[::-1]

    然后比较,将两个判断语句写在一起:

     if s[:len(s)-i-1]+s[len(s)-i:] == q[:i]+q[i+1:] or q[:len(s)-i-1]+q[len(s)-i:] == s[:i]+s[i+1:]:

    就这样完成了。

    人家64ms的范例思路也很巧妙:

    class Solution:
        def validPalindrome(self, s):
            if s == s[::-1]:
                return True
            l, r = 0, len(s) - 1
            while l < r:
                if s[l] == s[r]:
                    l, r = l + 1, r - 1
                else:
                    a = s[l + 1 : r + 1]
                    b = s[l:r]
                    return a == a[::-1] or b==b[::-1]

    真棒!!!

                                                    ——2019.10.9

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    bzoj3262 陌上花开
    bzoj2738 矩阵乘法
    bzoj3110 [Zjoi2013]K大数查询
    bzoj2527 [Poi2011]Meteors
    bzoj1758 [Wc2010]重建计划
    启动应用程序的Activty多种方式
    隐藏应用图标的多种方式
    Loading Large Bitmaps Efficiently
    java中的匿名内部类总结
    android listview addHeaderView和addFooterView的注意事项
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/11643356.html
Copyright © 2020-2023  润新知