计数排序的应用----排序字符串
生活随笔
收集整理的這篇文章主要介紹了
计数排序的应用----排序字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
加qq1126137994 微信:liu1126137994 一起學習更多技術!!!
題目:
給你一個原始字符串,根據該字符串內每一個字符串出現的次數,按照ASCII碼遞增的排序重新調整輸出。
舉例:
eeefgghh
則每種字符出現的次數分別是:
(1).eee 3次
(2).f 1次
(3).gg 2次
(4).hhh 3次
重新輸出后的字符串如下:
efghegheh
編程實現上述功能:
提示:
(1)原始字符串中僅可能出現字符與數字
(2)注意區分字符的大小寫
思路:
不同的字符與數字出現的次數可能為多次,可以利用哈希表原理,生成一個大小為128的數組,數組里面對應的值的下標,代表原始字符串中出現的字符的ASCII碼的小,數組的值,代表相應字符串出現的次數。剛好打印數組的下標字符,打印一次,數組對應的值減1,直到減為0則說明出現多次的字符已經全部輸出完成!
或者:
#include <iostream> #include <string>using namespace std;int max_count(int count[], int n) {int max_count = 0;for (int i = 1; i < n; i++){if (count[i]>count[max_count]){max_count = i;}}return max_count; }int main() {string str;getline(cin,str,'\n');int len = str.size();int count[128];for (int i = 0; i < 128; i++){count[i] = 0;}for (int i=0; i<len; i++){count[str[i]]++;}int num = max_count(count,128);for (int i = 0; i < num; i++){for (int j = 0; j < 128; j++){if (count[j] != 0){printf("%c",j);count[j]--;}}}//getchar();return 0; }總結
以上是生活随笔為你收集整理的计数排序的应用----排序字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go build 参数_Go语言 通过g
- 下一篇: 键盘改键软件_一秒五键,一键三招,万种光