Программа, которую я написал, вычисляет, сколько раз каждая буква появляется в строке. Я хочу изменить его, чтобы он нашел символ, который появляется большое количество раз подряд, т. Е. Для строки «aabbbcccca» я хочу напечатать f «c» (так как есть четыре c в строке и только два a и три б).Вычисление символов apperances в строке
Как изменить мою программу, что она будет делать то, что я хочу? Я ищу решение, которое будет максимально простым, и я хочу как можно больше использовать существующий код.
#include "stdafx.h"
#include "string.h"
#include "ctype.h"
int count_nonspace(const char* str)
{
int count = 0;
while (*str)
{
if (!isspace(*str++))
count++;
}
return count;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[127];
int i = 0, j = 0, count[127] = { 0 };
char string[100] = "Hello world";
for (i = 0; i < strlen(string); i++)
{
for (j = 33; j<127; j++)
{
if (string[i] == (j))
{
count[j]++;
}
}
}
for (j = 0; j< 127; j++)
{
if (count[j] > 0)
if (j < ' ' + 1)
printf("\n%d -> %d", count[j], j);
else
printf("\n%d -> %c", count[j], char(j));
}
}
Моя идея для изменения кода заключается в следующем (размещена только измененная часть): , но до сих пор результаты не как ожидалось, почему это?
for (i = 0; i < strlen(string); i++)
{
for (j = 33; j<127; j++)
{
if (string[i] == (j))
{
count[j]++;
if (string[i] == string[i + 1])
count[j]++;
else
best[j] = count[j];
}
}
}
'для (J = 33, J <127; j ++), если (строка [я] == J) рассчитывать [J] ++;' можно переписать только 'J = строка [ я]; if (32
_I хочу использовать существующий код как можно больше. Вы можете использовать большую часть своего кода. После вашего первого прохода у вас есть счет каждого персонажа. Теперь найдите символ, счетчик которого имеет наибольшее значение с помощью простого метода. –
Вам понадобятся два массива: 'count [127]' и 'best [127]'. Когда символ изменяется, обновите массив 'best', если это необходимо. – user3386109