贵州做旅游的网站,微信微网站是什么格式的,快速排名seo,嵌入式开发板推荐目录
力扣767. 重构字符串
解析代码 力扣767. 重构字符串
767. 重构字符串
难度 中等
给定一个字符串 s #xff0c;检查是否能重新排布其中的字母#xff0c;使得两相邻的字符不同。
返回 s 的任意可能的重新排列。若不可行#xff0c;返回空字符串 。 …目录
力扣767. 重构字符串
解析代码 力扣767. 重构字符串
767. 重构字符串
难度 中等
给定一个字符串 s 检查是否能重新排布其中的字母使得两相邻的字符不同。
返回 s 的任意可能的重新排列。若不可行返回空字符串 。
示例 1:
输入: s aab
输出: aba示例 2:
输入: s aaab
输出: 提示:
1 s.length 500s 只包含小写字母
class Solution {
public:string reorganizeString(string s) {}
}; 解析代码
和力扣1054. 距离相等的条形码基本一致。
贪心策略
每次处理一批相同的字母往 n 个空里面摆放。每次摆放的时候隔一个格子摆放一个字母。先处理出现次数最多的那个字母剩下的字母可任意。如果出现次数最多的那个数不超过n 1/ 2则有解下一个数想相邻的话只能“填一圈”不可能。
class Solution {
public:string reorganizeString(string s) {int hash[26] {0};char mostVal s[0];int maxCount 0;for(auto e : s) // 统计每个数出现的频次{hash[e - a];if(maxCount hash[e - a]){maxCount hash[e - a];mostVal e;}}int n s.size(), index 0;if(maxCount (n 1) / 2)return ;string ret(n, );for(int i 0; i maxCount; i) // 先处理出现次数最多的数{ret[index] mostVal;index 2;}hash[mostVal - a] 0;for(int i 0; i 26; i) // 处理剩下的数{for(int j 0; j hash[i]; j){if(index n)index 1;ret[index] i a;index 2;}}return ret;}
};