日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

计数排序的应用----排序字符串

發(fā)布時(shí)間:2023/12/10 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计数排序的应用----排序字符串 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

加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ù)組里面對(duì)應(yīng)的值的下標(biāo),代表原始字符串中出現(xiàn)的字符的ASCII碼的小,數(shù)組的值,代表相應(yīng)字符串出現(xiàn)的次數(shù)。剛好打印數(shù)組的下標(biāo)字符,打印一次,數(shù)組對(duì)應(yīng)的值減1,直到減為0則說明出現(xiàn)多次的字符已經(jīng)全部輸出完成!

#include <iostream> #include <string>using namespace std;//求數(shù)組(哈希表)中值出現(xiàn)次數(shù)最多的下標(biāo),用于循環(huán)多少次 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() {char str[1000];char* p = str;gets(str);int count[128];for (int i = 0; i < 128; i++){count[i] = 0;}for (; *p != 0; p++){//求數(shù)組中對(duì)應(yīng)下標(biāo)(即字符串的字符的值)出現(xiàn)的次數(shù)count[*p]++;}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; }

或者:

#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é)

以上是生活随笔為你收集整理的计数排序的应用----排序字符串的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。