栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

LeetCode-2287. 重排字符形成目标字符串

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode-2287. 重排字符形成目标字符串

  • 给你两个下标从0开始的字符串 s 和 target 。你可以从 s 取出一些字符并将其重排,得到若干新的字符串。

  • 从 s 中取出字符并重新排列,返回可以形成 target 的最大副本数。

示例 1:

输入:s = “ilovecodingonleetcode”, target = “code”
输出:2
解释:
对于 “code” 的第 1 个副本,选取下标为 4 、5 、6 和 7 的字符。
对于 “code” 的第 2 个副本,选取下标为 17 、18 、19 和 20 的字符。
形成的字符串分别是 “ecod” 和 “code” ,都可以重排为 “code” 。
可以形成最多 2 个 “code” 的副本,所以返回 2 。

示例 2:

输入:s = “abcba”, target = “abc”
输出:1
解释:
选取下标为 0 、1 和 2 的字符,可以形成 “abc” 的 1 个副本。
可以形成最多 1 个 “abc” 的副本,所以返回 1 。
注意,尽管下标 3 和 4 分别有额外的 ‘a’ 和 ‘b’ ,但不能重用下标 2 处的 ‘c’ ,所以无法形成 “abc” 的第 2 个副本。

示例 3:

输入:s = “abbaccaddaeea”, target = “aaaaa”
输出:1
解释:
选取下标为 0 、3 、6 、9 和 12 的字符,可以形成 “aaaaa” 的 1 个副本。
可以形成最多 1 个 “aaaaa” 的副本,所以返回 1 。

提示:

1 <= s.length <= 100
1 <= target.length <= 10
s 和 target 由小写英文字母组成

程序代码
class Solution:
    def rearrangeCharacters(self, s: str, target: str) -> int:
        if len(s) < len(target):
            return 0
        hash1 = Counter(s)
        hash2 = Counter(target)
        ans = []
        for key, word in hash2.items():
            if hash2[key] and hash1[key] == 0:
                return 0
        for key, word in hash1.items():
            if hash2[key] and hash1[key] >= hash2[key]:
                ans.append(hash1[key] // hash2[key])
            if hash2[key] > hash1[key]:
                return 0
        return min(ans) if ans else 0
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/938275.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号