思路:这道题还是有难度的,我只想到了如何判断它是否为空字符串,而不知道非空字符串时应该输出的结果,就是没有想到插入法;这道题可以通过举例子发现,如果最大的字符个数如果>(长度+1)/2,那么它是无论如何都达不到条件的;可以通过计算每个字符出现个数来实现这一功能;


举个例子就能发现,如果length=3的字符串aab对于出现(length+1)/2次的a字符,只能把它放在evenIndex才能装下(主要就是因为第一个索引为0),并且这个字符串是满足条件的;
总的来说,就是一定要想到插入法,想明白为什么分奇偶的插入;
官方题解

string reorganizeString(string S)
{if (S.length() < 2){return S;}vector<int> counts(26, 0);int maxCount = 0;int length = S.length();//统计各字符出现的次数for (int i = 0; i < length; i++){char c = S[i];counts[c - 'a']++;maxCount = max(maxCount, counts[c - 'a']);}//最大字符长度唱过(总长度+1)的一半时,无论怎么排都有相邻的相同字符if (maxCount > (length + 1) / 2){return "";}//核心部分string reorganizeArray(length, ' ');int evenIndex = 0, oddIndex = 1;int halfLength = length / 2;for (int i = 0; i < 26; i++){char c = 'a' + i;while (counts[i] > 0 && counts[i] <= halfLength && oddIndex < length){reorganizeArray[oddIndex] = c;counts[i]--;oddIndex += 2;}while (counts[i] > 0){reorganizeArray[evenIndex] = c;counts[i]--;evenIndex += 2;}}return reorganizeArray;
}

Leetcode每日一题:767.reorganize-string(重构字符串)相关推荐

  1. LeetCode每日一题——1758. 生成交替二进制字符串的最少操作数

    LeetCode每日一题系列 题目:1758. 生成交替二进制字符串的最少操作数 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个仅由字符 '0' 和 '1' ...

  2. Leetcode每日一题:345.reverse-vowels-of-a-string(反转字符串中的元音字母)

    思路:这道题有很多种办法解决,比如用一个vector存字符串中元音字母的索引,然后反转,或者用一个字符串res存原字符串中的元音字母(倒着存,从len-1开始遍历啊),然后遍历原字符串,把原来位置的元 ...

  3. Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)

    思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...

  4. leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用

    leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...

  5. LeetCode 每日一题 3. 无重复字符的最长子串

    LeetCode 每日一题 3. 无重复字符的最长子串   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 本文原创 ...

  6. Leetcode 每日一题双题版(2.25+2.24)模拟练细节

    Leetcode 每日一题双题版(2.25+2.24)模拟练细节 前言 刚刚敲了今天刷新的题目,然后昨天的也写了,就想着更新一下blog 两道题都是模拟题,对于模拟,我的看法就是看懂题目,拿捏细节,难 ...

  7. leetcode每日一题--前缀树;前缀哈希;深搜;面试题 08.04. 幂集;648. 单词替换面试题 01.09. 字符串轮转;剑指 Offer II 062. 实现前缀树

    leetcode每日一题 ps:今天的每日一题没意思,简单的模拟,自己换一道 面试题 08.04. 幂集 幂集.编写一种方法,返回某集合的所有子集.集合中不包含重复的元素. 说明:解集不能包含重复的子 ...

  8. leetcode 每日一题机器人推送

    leetcode-question-today github repo: cloud-org/leetcode-question-today 有用请点 star leetcode 每日一题推送(目前支 ...

  9. LeetCode每日一题之排列硬币

    前言: 大家好,今天是LeetCode每日一题的第十天,,给大家分享的是排列硬币,难度系数两颗星!废话不多说,先上题目! 1.1 题目要求 题目类型:排列硬币 题目内容: 总共有n枚硬币,将它们摆成一 ...

  10. Leetcode每日一题——思路小记

    文章目录 LeetCode每日一题 golang T15 2020.6.12 三数之和,双指针的运用 T70 2020.6.13 斐波那契数列 T1014 2020.6.17 最佳观光:双指针,计算公 ...

最新文章

  1. mysql同步出现错误
  2. MySQL Group Replication调研剖析
  3. visual studio toolbox 修复
  4. git ssh创建分支_【ssh简单版git-server 1】自建git-server
  5. SIP代理服务器(2)
  6. SharePoint 2013开发入门探索(二)- 列表操作
  7. mybatis源码学习篇之——执行流程分析
  8. 【Elasticsearch】为Elasticsearch启动https访问
  9. 制作并使用9-patch图像
  10. “630”落幕 光伏何去何从?
  11. 产品质量的基石——微软Bug管理
  12. 电脑录屏用什么软件?录屏软件哪个好用?
  13. 【Vue使用高德API制作热力图】
  14. python sorted怎么排序_Python sorted排序方法怎么用
  15. HTML背景透明到桌面,桌面图标背景透明的设置方法
  16. [宋史学习] 三省六部制的破坏与宋初的中央政府机构
  17. Arduino - PC817C光耦
  18. android 谷歌定位demo,android实现定位与目的地的导航示例代码
  19. Psins代码解析之全局变量轨迹仿真(test_SINS_trj.m)惯性解算(test_SINS.m)
  20. cocos2d video视频层放置ui

热门文章

  1. [Tips]matplotlib 命令行画图保存
  2. Python面向对象之结构与成员
  3. 一、数据类型和运算符——3-数据类型
  4. 【数论Day1】 最大公约数(gcd)题目
  5. SQLServer查询锁表
  6. 2018.10.26多校
  7. asp类型转换函数汇总 转贴
  8. Linux 远程和本地的一些解决方案
  9. Matlab之数据处理
  10. Objective-C Memory Management Being Exceptional 异常处理与内存