1 Star 0 Fork 0

MetaverseMobile/leetcode

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
767_重构字符串.cpp 1.79 KB
一键复制 编辑 原始数据 按行查看 历史
TieNan2019 提交于 2020-11-30 09:12 . Create 767_重构字符串.cpp
class Solution {
public:
struct counter {
char ch;
int n;
counter(char ch, int n): ch(ch), n(n) {}
bool operator <(const counter b) const{
return this->n < b.n;
}
};
bool cmp(const counter &a, const counter &b) {
if (a.n < b.n)
return true;
return false;
}
string reorganizeString(string S) {
map<char, int> dict;
for (char ch : S)
dict[ch]++;
priority_queue <counter> que;
for (auto it = dict.begin(); it != dict.end(); it++) {
que.push(counter(it->first, it->second));
}
string res;
while (!que.empty()) {
counter a = que.top();
que.pop();
/* 可以填入 */
if (res.empty() || res.back() != a.ch) {
res = res + a.ch;
a.n--;
}
else if (que.empty()) {
return "";
}
/* 字母重复 */
else if (res.back() == a.ch) {
counter b = que.top();
que.pop();
res = res + b.ch;
b.n--;
if (b.n)
que.emplace(b);
}
if (a.n)
que.emplace(a);
}
return res;
}
};
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/MetaverseMobile/leetcode.git
[email protected]:MetaverseMobile/leetcode.git
MetaverseMobile
leetcode
leetcode
main

搜索帮助