文章

16

粉丝

33

获赞

2

访问

2.7k

头像
字母排序 题解:32行极简易理解,比其它题解短10行!!!
P2019
发布于2024年3月29日 17:59
阅读数 202

## 分析
1.创建一个大小为128的数组sheet,序号表示ascii码强转为int表示的数值,对应的数组值表示该ascii码在输入字符串中出现的次数
2.设置一个max变量和id变量,max初值为0,从下标为((int)'A')开始遍历sheet数组,找到最大的值赋给max,对应的数组序号赋给id,如果最大的max值为0,表明字符串已经打印完毕了,结束程序。
3.将((char)id)打印max遍,然后回到第二步
### 代码——32行极简,比其他题解短10行

#include <iostream>
#include <string.h>
using namespace std;
int main() {
    char str[1001];
    while (scanf("%s", str) != EOF) {
        int length = strlen(str);
        int sheet[128] = {0};
        for (int i = 0; i < length; i++) {
            int index = (int)str[i];
            sheet[index]++;
        }
        while (true) {
            int max = 0;
            int id;
            for (int i = (int)'A'; i < 128; i++) {
                if (sheet[i] > max) {
                    max = sheet[i];
                    id = i;
                }
            }
            if (max == 0) {
                break;
            }
            for (int i = 0; i < max; i++) {
        ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发