昨天写的题目较为简单,和今天写的一起做一个总结
简单模拟即可
简单模拟即可
简单模拟即可
简单模拟即可。构建哈夫曼树,哈夫曼编码
由于全是小写字符串,使用一个数组,记录每个字母存在的最后一个位置。从最大字母开始遍历到最小字符,这一过程中遍历原字符串,输出其中的当前最大字符,即可得到最终的结果。
#include <bits/stdc++.h>
using namespace std;
int num[26] = {0};
int main() {
memset(num, 0, sizeof(num));
string s;
cin >> s;
for(int i = 0; i < s.size(); i++)
num[s[i] - 'a'] = max(num[s[i] - 'a'], i);
int start = 0;
for(int i = 25; i >= 0; i--) {
if(num[i] == 0)
continue;
else {
while(start <= num[i] && start < s.size()) {
if(s[start] == ('a' + i))
cout << s[start];
start += 1;
}
if(start == s.size())
break;
}
}
return 0;
}