LeetCode题解(0767):重构字符串至相邻字符不相同(Python)
发布日期:2021-06-29 19:58:08 浏览次数:3 分类:技术文章

本文共 936 字,大约阅读时间需要 3 分钟。

题目:(中等)

标签:字符串

解法 时间复杂度 空间复杂度 执行用时
Ans 1 (Python) O ( N ) O(N) O(N) O ( N ) O(N) O(N) 28ms (99.81%)
Ans 2 (Python)
Ans 3 (Python)

解法一(排序法):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QkjADl1Z-1597723375778)(LeetCode题解(0767)]:截图1.png)

class Solution:    def reorganizeString(self, S: str) -> str:        # 统计每个字母的出现频次        count = [(S.count(x), x) for x in set(S)]        # 计算是否可以构成字符串        if max(count, key=lambda k: k[0])[0] > (len(S) + 1) / 2:            return ""        # 构成临时字符串        count.sort(key=lambda k: k[0])        nums = []        for num, x in count:            nums += [x] * num        # # 生成结果字符串        ans = []        i1 = 0        i2 = int(len(S) / 2)        first = True        for i in range(len(S)):            if first:                ans.append(nums[i2])                i2 += 1            else:                ans.append(nums[i1])                i1 += 1            first = not first        return "".join(ans)

转载地址:https://dataartist.blog.csdn.net/article/details/108074285 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LeetCode题解(0791):依据字符在另一个字符串中的出现顺序排序字符串(Python)
下一篇:LeetCode题解(0761):特殊的二进制序列交换后的最大值(Python)

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月06日 21时19分35秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章