计数排序的应用----排序字符串
加qq1126137994 微信:liu1126137994 一起學(xué)習(xí)更多技術(shù)!!!
題目:
給你一個(gè)原始字符串,根據(jù)該字符串內(nèi)每一個(gè)字符串出現(xiàn)的次數(shù),按照ASCII碼遞增的排序重新調(diào)整輸出。
舉例:
eeefgghh
則每種字符出現(xiàn)的次數(shù)分別是:
(1).eee 3次
(2).f 1次
(3).gg 2次
(4).hhh 3次
重新輸出后的字符串如下:
efghegheh
編程實(shí)現(xiàn)上述功能:
提示:
(1)原始字符串中僅可能出現(xiàn)字符與數(shù)字
(2)注意區(qū)分字符的大小寫
思路:
不同的字符與數(shù)字出現(xiàn)的次數(shù)可能為多次,可以利用哈希表原理,生成一個(gè)大小為128的數(shù)組,數(shù)組里面對應(yīng)的值的下標(biāo),代表原始字符串中出現(xiàn)的字符的ASCII碼的小,數(shù)組的值,代表相應(yīng)字符串出現(xiàn)的次數(shù)。剛好打印數(shù)組的下標(biāo)字符,打印一次,數(shù)組對應(yīng)的值減1,直到減為0則說明出現(xiàn)多次的字符已經(jīng)全部輸出完成!
或者:
#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; }總結(jié)
以上是生活随笔為你收集整理的计数排序的应用----排序字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go build 参数_Go语言 通过g
- 下一篇: 比较一下主流国际快递系统 国际快递公司