文章

16

粉丝

66

获赞

96

访问

14.5k

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

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

  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4. int main() {
  5.     char str[1001];
  6.     while (scanf("%s", str) != EOF) {
  7.         int length = strlen(str);
  8.         int sheet[128] = {0};
  9.         for (int i = 0; i < length; i++) {
  10.             int index = (int)str[i];
  11.             sheet[index]++;
  12.         }
  13.         while (true) {
  14.             int max = 0;
  15.             int id;
  16.             for (int i = (int)'A'; i < 128; i++) {
  17.                 if (sheet[i] > max) {
  18.                     max = sheet[i];
  19.                     id = i;
  20.                 }
  21.             }
  22.             if (max == 0) {
  23.                 break;
  24.             }
  25.             for (int i = 0; i < max; i++) {
  26.         ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发