替换后的最长重复字符(LeetCode)

题目

        给你一个字符串 s 和一个整数 k 。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。

        在执行上述操作后,返回 包含相同字母的最长子字符串的长度。

解题

def characterReplacement(s, k):
    count = {}
    max_len = 0
    left = 0
    max_count = 0

    for right in range(len(s)):
        # 统计右指针所指字符的出现次数
        count[s[right]] = count.get(s[right], 0) + 1
        # 更新当前窗口内出现最多字符的次数
        max_count = max(max_count, count[s[right]])

        # 如果需要改变的字符数量超过了k,移动左指针
        if (right - left + 1) - max_count > k:
            count[s[left]] -= 1
            left += 1

        # 更新最大长度
        max_len = max(max_len, right - left + 1)

    return max_len


s = "ABAB"
k = 2
print(characterReplacement(s, k))  # 输出: 4
  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
python最长指定瑕疵元音字符串可以通过代码实现。为了达到这个目的,需要从原始字符串中找出所有的元音字母。根据题目的要求,我们可以将这些元音字母中的一个或多个替换成其他元音。接下来,需要确定最长替换后的字符串,并将其返回。 代码实现的思路如下: 1.定义元音字母列表 在代码中我们需要定义一个包含所有元音字母的列表。在Python中,元音字母包括"a","e","i","o","u"五个字母,因此元音字母列表为["a","e","i","o","u"]。 2.将原始字符串中的元音字母加入列表 接下来,我们需要遍历原始字符串中的每个字符,判断这个字符是否为元音字母。如果是元音字母,则将其加入元音字母列表。 3.替换元音字母并计算最长字符串 之后,我们需要遍历所有的元音字母,依次替换其中的每个字母,然后计算替换后的字符串的长度并保存最长字符串的长度。 4.返回最长字符串 最后,我们将计算得到的最长字符串长度返回即可。 以下是相关的Python代码: ``` python def longest_vowel_substring(s: str, vowels: list): # 定义一个元音字母列表 # 字母 a,e,i,o,u 分别代表英文中的元音字母 vowel_list = vowels # 遍历原始字符串s,将所有的元音字母存入to_be_replaced列表 to_be_replaced = [] for i in range(len(s)): if s[i] in vowel_list: to_be_replaced.append(i) # 遍历所有的元音字母,依次替换其中的每个字母 max_length = 0 for i in range(len(to_be_replaced)): for j in range(len(vowel_list)): if s[to_be_replaced[i]] != vowel_list[j]: new_s = s[:to_be_replaced[i]] + vowel_list[j] + s[to_be_replaced[i]+1:] length = len(new_s) if length > max_length: max_length = length # 返回计算得到的最长字符串长度 return max_length ``` 使用该函数进行测试,例如: ``` python s = "leetcode" vowels = ["a","e","i","o","u"] print(longest_vowel_substring(s,vowels)) # 结果为 3 ``` leɛ leɛ leɛ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值