📅  最后修改于: 2023-12-03 15:26:57.567000             🧑  作者: Mango
在字符串处理中,经常需要找到没有连续相同字母的最长子串的长度。例如,在字符串abccdefg
中,没有连续相同字母的最长子串为abcdefg
,长度为7。
以下是一个简单的算法来找到没有连续相同字母的最长子串的长度:
count
为1,一个最大长度变量max_len
为1,一个当前长度变量cur_len
为1。cur_len
加1。否则,将cur_len
重置为1。cur_len
大于max_len
,则将max_len
设置为cur_len
。max_len
。下面是Python实现:
def max_len_no_repeated_chars(s: str) -> int:
count = 1
max_len = 1
cur_len = 1
for i in range(1, len(s)):
if s[i] != s[i-1]:
cur_len += 1
else:
cur_len = 1
if cur_len > max_len:
max_len = cur_len
return max_len
该算法的时间复杂度是$O(n)$,其中$n$是字符串s
的长度。
下面是一些测试用例:
assert max_len_no_repeated_chars("abccdefg") == 7
assert max_len_no_repeated_chars("aabbcdefg") == 3
assert max_len_no_repeated_chars("abcabcdabcde") == 5
assert max_len_no_repeated_chars("aaaaa") == 1
以上就是一个简单的算法来找到没有连续相同字母的最长子串的长度,并提供了Python实现和一些测试用例。