Leetcode 5. 最长回文子串 & 20.有效的括号

难度:medium

题目描述

给你一个字符串 s,找到 s 中最长的回文子串。

示例 1:

输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。

思路

由于是找回文串,可以采用中心扩展的方法,遍历每个中心点位置,尽可能大的向左右两边扩展。最后取一个最好的中心点即可。

class Solution(object):
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        max_len = 0
        ans_str = ""
        for center in range(len(s)):
            str1 = self.ExpandfromCenter(s,center,center) ##"babad"->"aba"
            str2 = self.ExpandfromCenter(s,center,center+1)##"abbc"->"bb"
            if len(str1) > max_len:
                max_len = len(str1)
                ans_str = str1
            if len(str2) > max_len:
                max_len = len(str2)
                ans_str = str2
        return ans_str
    def ExpandfromCenter(self,s,left,right):##向左右两边扩展
        while(left>=0 and right<len(s) and s[left]==s[right]):
            left -= 1
            right += 1
        return s[left+1:right]

在这里插入图片描述

w这道题好像有点简单…那么再写一道简单题吧。括号匹配?简单吧。

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。

虽然这道题很简单,但是第一次用python写还是有一些东西要记录的。毕竟,遇到字符串的时候就会很恨c++。

class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        Stack = []
        pair_dic = {"}":"{",")":"(","]":"["}
        for i in range(len(s)):
            char = s[i]
            if char in pair_dic.values():
                Stack.append(char)
            if char in pair_dic.keys():
                if len(Stack) == 0 or Stack[-1] != pair_dic[char]:
                    return False
                Stack.pop()
        return len(Stack) == 0

✨ python里实现栈:
可以直接用列表来实现栈。

  • append: 相当于栈的push()
  • pop(): 相当于栈的pop(), 会删除末尾的元素
  • pop(0): 相当于队列的pop(),会删除开头的元素
  • insert(0,元素):在列表开头插入元素
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值