溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++找出字符串中出現(xiàn)最多的字符和次數(shù),時(shí)間復(fù)雜度小于O(n^2)

發(fā)布時(shí)間:2020-09-16 15:04:28 來(lái)源:腳本之家 閱讀:203 作者:蝸牛201 欄目:編程語(yǔ)言

已知字符串“aabbbcddddeeffffghijklmnopqrst”編程找出出現(xiàn)最多的字符和次數(shù),要求時(shí)間復(fù)雜度小于O(n^2)

/********************************************************
Copyright (C), 2016-2017,
FileName: main9
Author: woniu201
Description:求字符串中出現(xiàn)次數(shù)最多的字符和次數(shù)
********************************************************/
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void search(char* pData, int len)
{
 char counts[1024] = {0}; //存放原始數(shù)據(jù)作為為索引出現(xiàn)的次數(shù)
 char bufMax[1024] = {0}; //用于存放出現(xiàn)次數(shù)最多的字符
 int max = 0;  //出現(xiàn)次數(shù)最多的字符
 for (int i=0; i<len; i++)
 {
 counts[pData[i]] ++;
 }
 for (int i=0; i<1024; i++)
 {
 if (counts[i] > max)
 {
 max = counts[i];
 bufMax[0] = i;
 }else if ((counts[i] == max) && (counts[i] !=0))
 {
 bufMax[strlen(bufMax)] = i;
 }
 }
 printf("出現(xiàn)最多的字符分別為:");
 for (int i=0; i<strlen(bufMax); i++)
 {
 printf("%c ", bufMax[i]);
 }
 printf("\n");
 printf("出現(xiàn)最多的字符的次數(shù):%d\n", max);
}
int main()
{
 char* srcData = "aabbbcddddeeffffghijklmnopqrst";
 search(srcData, strlen(srcData));
 getchar();
 return 1;
}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)億速云的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI