1.给一个字符串,统计字符串中每个字符出现的次数,连续出现算一次【如abcbbbd,b出现了2次】
算法思想:
创建散列表存储每个字符出现的次数
遍历字符串数组,遇到相同的字符跳过统计,否则更新出现次数
void countTimes(char* s)
{
int hashtable[256];
for(int i = 0; i < 255; i++)//初始化散列表
{
hashtable[i] = 0;
}
int i = 0;
while(s[i+1] != '\0')//遍历字符串数组
{
if(s[i] == s[i+1])//如果相邻元素相同,则跳过不统计次数
{
i++;
continue;
}
hashtable[s[i]]++;//s[i]出现次数+1
i++;
}
for(int i = 0; i <= 255; i++)
{
if(hashtable[i] != 0)//没出现的跳过不打印
{
printf("%c出现了%d次\n", i, hashtable[i]);
}
}
}