一个交替01串被定义为一个字符串,只有字符“0”和“1”组成,且任意相邻两个字符都是不同的。例如:”1“,”10101“,”0101010“都是交替01串 现在给定一个01字符串s,问其中最长的连续子串,是交替01串的长度是多少?
时间: 2023-04-26 18:00:18 浏览: 220
题目描述:给定一个01字符串s,求其中最长的连续子串,是交替01串的长度是多少?
解题思路:遍历字符串s,记录当前连续的交替01串长度和最长交替01串长度,如果当前字符和前一个字符相同,则当前交替01串长度清零,否则当前交替01串长度加1,更新最长交替01串长度。
代码实现:
def findLongestAlternatingSubstr(s):
curLen = 1
maxLen = 1
for i in range(1, len(s)):
if s[i] != s[i-1]:
curLen += 1
maxLen = max(maxLen, curLen)
else:
curLen = 1
return maxLen
示例:
s = "10101"
print(findLongestAlternatingSubstr(s)) # 输出 5
s = "010101"
print(findLongestAlternatingSubstr(s)) # 输出 7
s = "111111"
print(findLongestAlternatingSubstr(s)) # 输出 1
相关问题
现在有一个只含0、1的字符串,我想让这个字符串以0、1间隔组成
你可以使用正则表达式来实现这个功能。正则表达式是一种用于匹配文本的工具,在这里可以用来匹配0和1交替出现的字符串。你可以使用以下正则表达式来实现这个功能:
```python
import re
s = "0101010101"
result = re.sub(r"(\d)(?=(\d))", r"\1 ", s)
print(result)
```
这个正则表达式的意思是:匹配任意一个数字,然后在它后面匹配一个数字,使用空格替换第一个数字后面的数字。这样就可以把连续的0和1分隔开来,得到以0、1间隔组成的字符串。
实现一个函数,将输入的两个字符串交织在一起。例如:"abc"和"123"交织后变成
要实现一个函数将两个字符串交织在一起,我们需要遍历两个字符串的字符,并按照一定的规则将字符组合起来。一个简单的方法是交替地从第一个字符串和第二个字符串中取字符,直到所有字符串都被处理完毕。下面是一个简单的实现示例:
```python
def interleave_strings(str1, str2):
result = ""
# 获取两个字符串的长度,以便后续循环
len1, len2 = len(str1), len(str2)
# 用zip打包两个字符串,这样可以同时遍历它们的字符
for ch1, ch2 in zip(str1, str2):
result += ch1 + ch2
# 如果两个字符串长度不同,需要将剩余的部分添加到结果中
# 如果str1比str2长,就取str1的剩余部分
if len1 > len2:
result += str1[len2:]
# 如果str2比str1长,就取str2的剩余部分
elif len2 > len1:
result += str2[len1:]
return result
# 示例使用
str1 = "abc"
str2 = "123"
interleaved = interleave_strings(str1, str2)
print(interleaved)
```
这段代码会输出 "a1b2c3",因为它是将 "abc" 和 "123" 的字符按照顺序交替组合得到的结果。