LeetCode 常见字符串问题 (python实现)

本文探讨了LeetCode中涉及字符串的问题,包括判断同字母异序词、求解可构成回文串的最大长度、同构字符串判断、回文子字符串个数、回文数判断以及统计二进制字符串中连续1和连续0数量相同的子字符串个数。通过Python代码详述了解决这些问题的不同策略和方法。
摘要由CSDN通过智能技术生成

字符串

1. 判断两个字符串是否是:同字母异序词

LeetCode 242. Valid Anagram (Easy)

使用列表实现的哈希表存储s串字符出现的次数,遍历t串字符,对哈希表中的字符进行减法操作,如果出现负数,那么字符数量不匹配,返回False,如果遍历完成不返回False,那么字符串是匹配的,返回True。

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        if len(s) != len(t): return False
        hashMap = [0 for _ in range(26)]
        for ch in s:
            hashMap[ord(ch)-97] += 1
        for ch in t:
            hashMap[ord(ch)-97] -= 1
            if hashMap[ord(ch)-97] < 0:
                return False
        return True
2. 可构成回文串的最大长度

LeetCode 409. Longest Palindrome (Easy)

回文串一定是轴对称的。也就是中间的串可以单独出现,两边的串一定是成对出现的。那么出现偶数次的字符一定可以构成回文串。出现奇数次的字符,将其进行减一操作也可以放在两边。最后在中间添加一个奇数个字符即可构成最长串。

class Solution:
    def longestPalindrome(self, s: str) -> int:
        res, Odd = 0, 0
        hashMap = [0 for _ in range(52)]
        for ch in s:
            hashMap[ord(ch)-97] += 1
        for item in hashMap:
            if item % 2 == 0:
                res += item
            else:
                res += item - 1
                Odd = 1
        return res if Odd == 0 else res + 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值