Как найти самый длинный символ в строке? - PullRequest
0 голосов
/ 05 апреля 2020

Ввод: aabbbccbc Вывод: 3

Здесь самый длинный повторяющийся символ - b [aa (bbb) ccbc], потому что есть последовательность из 3 b с.

У меня есть чтобы ввести одну строку, я должен использовать сортировку слиянием и рекурсию, чтобы отсортировать строку, а затем найти самый длинный символ.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int lsc(char *a, int p, int r);

int main(int argc, char *argv[]) {
    int l = strlen(argv[1]);

    printf("%d \n", lsc(argv[1], 0, l - 1));
    return 0;
}

Это функция main этого кода. Мне нужно создать int lsc(char *a, int p, int r) функцию для проверки ввода.

1 Ответ

2 голосов
/ 06 апреля 2020

Сортировка строки не помогает в этой проблеме, на самом деле строка не должна быть изменена вообще, так как это может привести к другому результату: aabbbccbc придет aabbbbccc с результатом 4.

Решение довольно простое. Выполните следующие шаги:

  • , если строка пуста, самая длинная последовательность - 0.
  • , иначе начинайте с последовательности из 1 повторения первого символа: max = count = 1.
  • если следующий символ идентичен, увеличьте количество повторений (count++), если число повторений превышает текущий максимум, увеличьте это значение (max++).
  • в противном случае сбросьте Повторите счет до 1 (count = 1)
  • , чтобы перейти к следующему символу
  • , когда вы достигнете конца строки, верните max.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...