Leetcode 1400:构造K个回文字符串(超详细的解法!!!)
给你一个字符串 s
和一个整数 k
。请你用 s
字符串中 所有字符 构造 k
个非空 回文串 。
如果你可以用 s
中所有字符构造 k
个回文字符串,那么请你返回 True ,否则返回 False 。
示例 1:
输入:s = "annabelle", k = 2
输出:true
解释:可以用 s 中所有字符构造 2 个回文字符串。
一些可行的构造方案包括:"anna" + "elble","anbna" + "elle","anellena" + "b"
示例 2:
输入:s = "leetcode", k = 3
输出:false
解释:无法用 s 中所有字符构造 3 个回文串。
示例 3:
输入:s = "true", k = 4
输出:true
解释:唯一可行的方案是让 s 中每个字符单独构成一个字符串。
示例 4:
输入:s = "yzyzyzyzyzyzyzy", k = 2
输出:true
解释:你只需要将所有的 z 放在一个字符串中,所有的 y 放在另一个字符串中。那么两个字符串都是回文串。
示例 5:
输入:s = "cr", k = 7
输出:false
解释:我们没有足够的字符去构造 7 个回文串。
提示:
1 <= s.length <= 10^5
s
中所有字符都是小写英文字母。1 <= k <= 10^5
解题思路
如果len(s) < k
,那么必然无解。接着可以统计s
中每个字符出现的次数,对于出现次数为偶数次的字符,实际上它放在哪里都没有关系,只需要考虑奇数次的字符。如果有t
个奇数次字符,那么
t <= k
,存在解t > k
,不存在解
如何理解呢?可以将t
个不同字符放入k
个字符串中,如果t <= k
,那么可以划分为t
个奇数长度的回文串和k-t
个偶数长度的字符串;如果t > k
,那么必然有两个以上的奇数个数的字符在同一个字符串里面,无论如何都构不成回文串。
class Solution:def canConstruct(self, s: str, k: int) -> bool:return sum([v % 2 for v in collections.Counter(s).values()]) <= k <= len(s)
我将该问题的其他语言版本添加到了我的GitHub Leetcode
如有问题,希望大家指出!!!
Leetcode 1400:构造K个回文字符串(超详细的解法!!!)相关推荐
- leetcode 1400. 构造 K 个回文字符串
leetcode 1400. 构造 K 个回文字符串 文章目录 leetcode 1400. 构造 K 个回文字符串 一.题目 1.题目描述 2.基础框架 3.解题思路 一.题目 原题链接:1400. ...
- 1400. 构造 K 个回文字符串
1400. 构造 K 个回文字符串 给你一个字符串 s 和一个整数 k .请你用 s 字符串中 所有字符 构造 k 个非空 回文串 . 如果你可以用 s 中所有字符构造 k 个回文字符串,那么请你返回 ...
- 【LeetCode】1400. 构造 K 个回文字符串 Construct K Palindrome Strings
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 统计奇数字符出现次数 日期 题目地址:https:// ...
- 【LeetCode成长之路:回文字符串运用题】 回文子串与最长回文子串
⭐️前面的话⭐️ 本篇文章介绍有关回文字符串两道题题解,分别为[647. 回文子串 ]和[ 5. 最长回文子串], 难度均为: 中等 标签: 双指针中心扩散 动态规划,展示语言java.
- Leetcode 29:两数相除(超详细的解法!!!)
给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 示例 1: 输 ...
- Leetcode 1258:近义词句子(超详细的解法!!!)
给你一个近义词表 synonyms 和一个句子 text , synonyms 表中是一些近义词对 ,你可以将句子 text 中每个单词用它的近义词来替换. 请你找出所有用近义词替换后的句子,按 字典 ...
- Leetcode 953:验证外星语词典(超详细的解法!!!)
某种外星语也使用英文小写字母,但可能顺序 order 不同.字母表的顺序(order)是一些小写字母的排列. 给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在 ...
- Leetcode 1125:最小的必要团队(超详细的解法!!!)
作为项目经理,你规划了一份需求的技能清单 req_skills,并打算从备选人员名单 people 中选出些人组成一个「必要团队」( 编号为 i 的备选人员 people[i] 含有一份该备选人员掌握 ...
- Leetcode 1229:安排会议日程(超详细的解法!!!)
你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「会议时间」是两位客户都有空参加,并且持续时间能 ...
最新文章
- LLDB+Python脚本:增强LLDB调试
- nginx 如何处理请求系列1-Nginx安装
- 数组之冒泡排序、选择排序
- 从零写一个编译器(三):语法分析之几个基础数据结构
- Django从理论到实战(part43)--HttpResponse对象
- 梦幻群侠传5帮派修炼_梦幻西游:2020年十大更新回顾 法连不秒空和连续战斗修复...
- python不换行空格输出_解决Python print输出不换行没空格的问题
- 液晶拼接处理器_液晶拼接屏方案的制作和规划
- shell 免杀aspx_记一次aspx网站渗透
- android 解压gzip,在Android中使用GZIPInputStream解压缩数据
- Unity UGUI源码解析
- 产业分析:2021抖音数据报告
- 华为路由器忘记密码怎么恢复
- 年终盘点:2010年半导体产业十大进展
- Oracle数据库(完整版)
- 西工大机考《 合同法》大作业网考
- Java - 使用Cipher类实现加密(RSA)
- 敏感词过滤优化的解决方案
- mysql instr locate_mysql函数之一:INSTR、LOCATE、POSITION VS LIKE
- Netty5的例子,简单介绍Netty的用法
热门文章
- 2022年11月7日-2022年11月13日学习周报
- idea手动打包Docker部署linux
- 初试 RabbitMQ采坑记录:org.springframework.amqp.AmqpIOException: java.io.IOException
- 派森小镇(六)熊孩子
- docker容器内时区相差8小时问题
- guava 各个版本下载地址
- /Localizable.strings:0: error: read failed: The data couldn’t be read because it isn’t in the correc
- 普林斯顿微积分读本——第一章 函数、图像和直线(读书笔记)
- 不告诉你永远不知道的程序
- 初音未来千本樱计算机简谱,千本樱钢琴简谱-数字双手-初音未来