📌  相关文章
📜  国际空间研究组织 | ISRO CS 2014 |问题 52(1)

📅  最后修改于: 2023-12-03 15:37:15.117000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2014 |问题 52

题目描述

给定一个字符串,找到具有连续相等且最长的字符序列的长度。例如,在字符串“ AABBBCCCC”中,最长的连续相等的字符序列为“ CCCC”,长度为4。

输入
  • 输入的字符串长度不超过10^5。
输出

一个整数,表示具有相同字符最长的连续序列的长度。

示例

输入

ABCDDEEEEEFGHII

输出

5
解题思路

我们可以使用一个计算器变量 count 和另一个变量 max_count 来追踪最长的连续字符集的长度,以及一个变量 prev_char 来追踪上一个字符值。 然后,我们遍历字符串,并对于每个字符,如果当前字符等于上一个字符,则增加 count 的值。否则,我们检查当前计数器 count 是否大于 max_count,如果是,则将其设置为 max_count。最后,我们返回 max_count 的值。

代码实现
def find_largest_seq_length(string):
    max_count = 0
    count = 1
    prev_char = string[0]
    for char in string[1:]:
        if char == prev_char:
            count += 1
        else:
            max_count = max(max_count, count)
            count = 1
        prev_char = char
    return max(max_count, count)
复杂度分析

该算法的时间复杂度为O(n),其中n是输入字符串的长度。我们遍历字符串一次并对于每个字符执行常数时间操作。空间复杂度为O(1),因为我们只使用了常数级别的附加存储。