Leetcode 2423. 删除字符使频率相同
本文最后更新于256 天前,其中的信息可能已经过时,如有错误请发送邮件到2446865563@qq.com

1.题目基本信息

1.1.题目描述

给你一个下标从 0 开始的字符串 word ,字符串只包含小写英文字母。你需要选择 一个 下标并 删除 下标处的字符,使得 word 中剩余每个字母出现 频率 相同。

如果删除一个字母后,word 中剩余所有字母的出现频率都相同,那么返回 true ,否则返回 false 。

注意:

  • 字母 x 的 频率 是这个字母在字符串中出现的次数。

  • 你 必须 恰好删除一个字母,不能一个字母都不删除。

1.2.题目地址

https://leetcode.cn/problems/remove-letter-to-equalize-frequency/description/

2.解题方法

2.1.解题思路

哈希表+模拟

2.2.解题步骤

第一步,统计单词中各个字符的频数charCnts数组

第二步,统计各个频数的频数freqCnts哈希表

第三步,遍历所有的字符及频数

  • 3.1.剪枝。字符频数为空(不存在),跳过

  • 3.2.将当前字符的频数减1

  • 3.3.更新字符频数的频数哈希表freqCnts,原频数c的频数减一,如果频数减后为0,则需要从哈希表中删除;如果c-1大于0,则其对应频数加1

  • 3.4.如果当前频数的频数哈希表freqCnts中只有一个元素,则说明情况合法,返回True

  • 3.5.将当前字符的频数加1,进行恢复;同时恢复频数的频数哈希表freqCnts

第四步,如果上面的遍历过程中没有找到合法情况,则返回False

3.解题代码

python代码

class Solution:
    def equalFrequency(self, word: str) -> bool:
        # 思路:哈希表+模拟
        # 第一步,统计单词中各个字符的频数charCnts数组
        charCnts = [0] * 26
        for c in word:
            charCnts[ord(c) - ord('a')] += 1
        # 第二步,统计各个频数的频数freqCnts哈希表
        freqCnts = Counter([a for a in charCnts if a != 0])
        # 第三步,遍历所有的字符
        for i in range(26):
            cnt = charCnts[i]
            # 3.1.剪枝。字符频数为空(不存在),跳过
            if cnt == 0:
                continue
            # 3.2.将当前字符的频数减1
            charCnts[i] -= 1
            # 3.3.更新字符频数的频数哈希表freqCnts,原频数c的频数减一,如果c-1大于0,则其对应频数加1;如果频数减后为0,则需要从哈希表中删除
            freqCnts[cnt] -= 1
            if freqCnts[cnt] == 0:
                del freqCnts[cnt]
            if cnt - 1 > 0:
                freqCnts[cnt - 1] += 1
            # 3.4.如果当前频数的频数哈希表freqCnts中只有一个元素,则说明情况合法,返回True
            if len(freqCnts) == 1:
                return True
            # 3.5.将当前字符的频数加1,进行恢复;同时恢复频数的频数哈希表freqCnts
            freqCnts[cnt] += 1
            if cnt - 1 > 0:
                freqCnts[cnt - 1] -= 1
            if freqCnts[cnt - 1] == 0:
                del freqCnts[cnt - 1]
            charCnts[i] += 1
        # 第四步,如果上面的遍历过程中没有找到合法情况,则返回False
        return False

4.执行结果

觉得有帮助可以投喂下博主哦~感谢!

作者:geek007

转载请注明文章地址及作者哦~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇