PTA:哈夫曼编码

题干

只有一行,是一个字符串,由长度不超过255个字符的小写英文字母组成。

输出格式:
有若干行,每行由两部分组成:一个字母和该字母出现的频率,中间用一个空格分隔,并按频率高低排列,频率相同时则按字母的ASCII码的先后顺序排列。

输入样例:
soon
输出样例:
o 2
n 1
s 1

解题过程

#include <stdio.h>
#include <string.h>
struct CharFreq {
   
    char letter;
    int frequency;
};
int compare(const void *a, const void *b) {
   
    struct CharFreq *charFreqA = (struct CharFreq *)a;
    struct CharFreq *charFreqB = (struct CharFreq *)b;
    if (charFreqA->frequency != charFreqB->frequency) {
   
        return charFreqB->frequency - charFreqA->frequency;
    } else {
   
        return charFreqA->letter - charFreqB->letter;
    }
}
int main() {
   
    char input[256];
    scanf("%s", input);
    int freq[26] = {
   0};
    int len = strlen(input);
    for (int i = 0; i < len; ++i) {
   
        if (input[i] >= 'a' && input[i] <= 'z') {
   
            freq[input[i] - 'a']++;
        }
    }
    struct CharFreq charFreqs[26];
    for (int i = 0; i < 26; ++i) {
   
        charFreqs[i].letter = 'a' + i;
        charFreqs[i].frequency = freq[i];
    }
    qsort(charFreqs, 26, sizeof(struct CharFreq), compare);
    for (int i = 0; i < 26; ++i) {
   
        if (charFreqs[i].frequency > 0) {
   
            printf("%c %d\n", charFreqs[i].letter, charFreqs[i].frequency);
        }
    }
    return 0;
}

相关推荐

  1. PTA编码

    2023-12-11 15:38:07       65 阅读
  2. 根据树求编码

    2023-12-11 15:38:07       36 阅读
  3. 编码(c++题解)

    2023-12-11 15:38:07       51 阅读
  4. go实现编码

    2023-12-11 15:38:07       44 阅读
  5. 数据结构:树及其编码

    2023-12-11 15:38:07       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-11 15:38:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-11 15:38:07       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-11 15:38:07       82 阅读
  4. Python语言-面向对象

    2023-12-11 15:38:07       91 阅读

热门阅读

  1. mysql8.x创建insert/update/delete触发器

    2023-12-11 15:38:07       59 阅读
  2. 算法通关村第十七关 | 黄金挑战 | 跳跃游戏

    2023-12-11 15:38:07       68 阅读
  3. execution unit的概念与实现----AGU

    2023-12-11 15:38:07       54 阅读
  4. C++- 格式化输出

    2023-12-11 15:38:07       64 阅读
  5. Redisson的基本使用

    2023-12-11 15:38:07       55 阅读
  6. 学习-ES

    2023-12-11 15:38:07       56 阅读
  7. 通讯录实现

    2023-12-11 15:38:07       63 阅读
  8. 央企国企相关

    2023-12-11 15:38:07       53 阅读