Начальный указатель самого распространенного алгоритма последовательных чисел - PullRequest
0 голосов
/ 02 марта 2020

1) Цель кода: я кодировал алгоритм, который должен дать мне точное число, которое является наиболее частым и последовательным числом одновременно.

2) Что я Я пытался написать весь код, и мне действительно удалось получить это точное число. Я также добавил частоту этого числа, которая является выходом.

3) Что мне нужно: я ищу алгоритм, который идентифицирует первый начальный индекс этих последовательных чисел. Например, если ввод 123777321, поскольку необходим индекс с номером 3, причина в том, что 777 является наиболее частым последовательным числом в этом входе, он должен найти свой «индекс», а также распечатать его.

Код, который я написал:

def maxRepeating(str):
    length = len(str)
    count = 0

    result = str[0]
    for i in range(length):

        current_count = 1
        for x in range(i + 1, length):

            if (str[i] != str[x]):
                break
            current_count += 1

        if current_count > count:
            count = current_count
            result = str[i]

    print("Longest same number sequence is of number {} by being repeated {} times in a row, with the first index starting at {}".format(result, count, i))



inputString = str(input("Please enter the string: "))

maxRepeating(inputString)

Пример ввода: Пожалуйста, введите строку: 123777321

Пример вывода: Самая длинная последовательность цифр имеет номер 7 при повторении 3 раз подряд, первый индекс начинается с 3

Ответы [ 2 ]

1 голос
/ 02 марта 2020

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

def maxRepeating(str):
    length = len(str)
    count = 0
    result = str[0]
    start_ind = None

    for i in range(length):

        current_count = 1
        for x in range(i + 1, length):

            if (str[i] != str[x]):
                break
            current_count += 1

        if current_count > count:
            count = current_count
            result = str[i]
            start_ind = i

    print("Longest same number sequence is of number {} by being repeated {} times in a row, with the first index starting at {}".format(result, count, start_ind))



inputString = str(input("Please enter the string: "))

maxRepeating(inputString)
0 голосов
/ 02 марта 2020

Из ваших комментариев я предполагаю, что вы пытаетесь получить индекс, с которого начинается наиболее часто встречающийся элемент, верно? Объявите другую переменную, например max_index, и обновляйте ее каждый раз, когда вы обновляете count и используете ее для печати индекса.

.....
max_index = 0
for i in range(length):

        current_count = 1
        for x in range(i + 1, length):

            if (str[i] != str[x]):
                break
            current_count += 1

        if current_count > count:
            count = current_count
            result = str[i]
            max_index = i
print("Longest same number sequence is of number {} by being repeated {} times in a row, with the first index starting at {}".format(result, count, max_index))
......
...