• 作者: 负雪明烛
  • id: fuxuemingzhu
  • 个人博客:http://fuxuemingzhu.cn/

目录

  • 题目描述
  • 题目大意
  • 解题方法
    • 统计奇数字符出现次数
  • 日期

题目地址:https://leetcode-cn.com/problems/construct-k-palindrome-strings/

题目描述

给你一个字符串 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. 1 <= s.length <= 10^5
  2. s 中所有字符都是小写英文字母。
  3. 1 <= k <= 10^5

题目大意

判断给出的字符串 s 能不能恰好构成 k 个回文串。

解题方法

统计奇数字符出现次数

其实很简单。我们只需要判断字符串中有多少个出现次数为奇数的字符就行了。

为什么?

一个回文字符串中只能有 0 个或者 1 个出现次数为 1 的字符,这个字符必须位于回文字符串的中间。

因此,要判断能不能有 k 个回文字符串,我们就看奇数字符出现的次数是否小于等于 k 个。

分配情况:

  1. 如果奇数字符恰好有 k 个,那么拆分出来的每个回文字符串中各分配 1 个。
  2. 如果奇数字符小于 k 个,那么剩下的回文串中不分配奇数字符,即只由偶数字符构成。

C++代码如下。

class Solution {public:bool canConstruct(string s, int k) {const int N = s.size();if (N < k) return false;if (N == k) return true;vector<int> count(26, 0);for (char c : s) {count[c - 'a'] ++;}int count_odd = 0;for (int i = 0; i < count.size(); ++i) {if (count[i] % 2 == 1) {count_odd ++;}}return count_odd <= k;}
};

欢迎关注负雪明烛的刷题博客,leetcode刷题800多,每道都讲解了详细写法!

日期

2020 年 4 月 5 日 —— 好久不打周赛了

【LeetCode】1400. 构造 K 个回文字符串 Construct K Palindrome Strings相关推荐

  1. leetcode 1400. 构造 K 个回文字符串

    leetcode 1400. 构造 K 个回文字符串 文章目录 leetcode 1400. 构造 K 个回文字符串 一.题目 1.题目描述 2.基础框架 3.解题思路 一.题目 原题链接:1400. ...

  2. Leetcode 1400:构造K个回文字符串(超详细的解法!!!)

    给你一个字符串 s 和一个整数 k .请你用 s 字符串中 所有字符 构造 k 个非空 回文串 . 如果你可以用 s 中所有字符构造 k 个回文字符串,那么请你返回 True ,否则返回 False ...

  3. 1400. 构造 K 个回文字符串

    1400. 构造 K 个回文字符串 给你一个字符串 s 和一个整数 k .请你用 s 字符串中 所有字符 构造 k 个非空 回文串 . 如果你可以用 s 中所有字符构造 k 个回文字符串,那么请你返回 ...

  4. C#LeetCode刷题之#680-验证回文字符串 Ⅱ​​​​​​​(Valid Palindrome II)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3961 访问. 给定一个非空字符串 s,最多删除一个字符.判断是否 ...

  5. 【LeetCode成长之路:回文字符串运用题】 回文子串与最长回文子串

    ⭐️前面的话⭐️ 本篇文章介绍有关回文字符串两道题题解,分别为[647. 回文子串 ]和[ 5. 最长回文子串], 难度均为: 中等 标签: 双指针中心扩散 动态规划,展示语言java.

  6. leetCode第五题-求字符串最长回文字符串

    原题链接: 最长回文字符串 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad" 输出:"bab" 解释:"ab ...

  7. LeetCode 680. 验证回文字符串 Ⅱ

    1. 题目 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True示例 2: 输入: "abca" ...

  8. LeetCode 2108. 找出数组中的第一个回文字符串

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串数组 words ,找出并返回数组中的 第一个回文字符串 .如果不存在满足要求的字符串,返回一个 空字符串 "" . 回 ...

  9. LeetCode 409. 最长回文串(构造最长回文判断)

    最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字 ...

最新文章

  1. 直播APP开发:直播人数是否该有限制
  2. 数组中的一些常用方法总结
  3. PHP中遍历stdclass object 及 json 总结[中国航天神舟十号以json形式向地面返回数据]...
  4. 图形基础 GPU架构(2)软件调用栈
  5. 安卓手机文件管理器简单横向评比 - imsoft.cnblogs
  6. PHP引用全局作用域中可用的全部变量是,php全局变量之学习笔记
  7. mysql数据库安装,真香!
  8. android 混合开发 图片,混合开发的大趋势之一React Native之Image
  9. DotNetNuke4.x安装心得(按照下面那篇《最完整的DNN 4.X 安装攻略(适合3.X版本)》安装还是失败的朋友进来看看...
  10. kali201904更新国内源的步骤
  11. php创建透明图片,php imagecreatetruecolor 创建高清和透明图片代码小结
  12. 如何快速调整参考文献格式
  13. 分享29个超赞的响应式Web设计
  14. 鼠标移动到的地方一直往右移动的解决办法
  15. 请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某
  16. K-means实现图像聚类
  17. 2023年中级注册安全工程师结果查询,注安查分官网是哪个?
  18. 小工具:用C++读取TGA并输出数据到文本
  19. 数学家闯了红灯会怎样?
  20. [小黄书管理平台]登录服务的实现

热门文章

  1. 店铺一定要注意店铺质量|百择电商
  2. 王垠——想得太多,做得太少
  3. 04 创建第一个Qt程序
  4. 阿里云学习笔记——设置规则引擎(2)
  5. 软件与中国古代史:政界往事(中)
  6. 河源微生物实验室建设合理化布置整理
  7. android 百度地图 505 问题
  8. 中兴ZXR10 160智能集成多业务路由器快速安装指南,图文并茂
  9. Specifying a namespace in include() without providing an app_name is not supported 记录
  10. 项目经理 如何正确处理突发事件