求字符串中出现频次最高的字符

2023-10-20 16:34:01 浏览数 (2)

题目给出的函数原型如下: char getMostCharFromString(const char *str); 具体要求为,若有多个相同的字符备选,返回其中最早出现的字符,比如字符串”wwwwwwdddaaabbbdddcccc”,w和d都出现过6次,但只返回第一个最早出现的w。

代码语言:javascript复制
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char getMostCharFromString(const char* str);
int main(int argc, char* argv[])
{
char *pBuf = “wwwwwwdddaaabbbdddcccc”;
printf(“出现最多的字符:%cn”, getMostCharFromString(pBuf));
system(“pause”);
return 0;
}
char getMostCharFromString(const char* str)
{
// 计算字符总数
int nCount = 0;
const char* strBak = str;
while (*strBak  ) nCount  ;
// 临时记录出现最多那个字符的总数
int flagCount = 0;
// 用于在循环中记录每一个出现的次数,用来和flagCount对比
int flagTmp = 0;
// 用来记录出现最多那个字符的下标
int flag = 0;
// 两套循环,分别把每个字符从头遍历到尾
for (int i = 0; i < nCount - 1; i  )
{
for (int j = 0; j < nCount - 1; j  )
{
// 如果出现相同字符,那么对把flagTmp  
if (str[i] == str[j])
flagTmp  ;
}
// 内循环结束后,判断flagTmp是否大于flagCount
if (flagTmp > flagCount)
{
// 如果大于,则记录下标
flag = i;
// 并把最大值赋给flagCount
flagCount = flagTmp;
}
// flagTmp置为0,以便下次循环
flagTmp = 0;
}
// 返回最终的结果
return str[flag];
}

0 人点赞