首页 > 试题广场 >

交错01串

[编程题]交错01串
  • 热度指数:35207 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串。
小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。

输入描述:
输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只包含'0'和'1'


输出描述:
输出一个整数,表示最长的满足要求的子串长度。
示例1

输入

111101111

输出

3
很简单的一道题目,时间空间复杂度本菜鸡从来都不管的
(本菜鸡只管达到目的,不管代码是否可以维护)
def fun(string):    
    if len(string) == 1:
        return 1 
    result_list = [] #存储各个交错串的长度
    count = 1 
    #如果前后不一样计数加一。如果遇到字符串的结束则立即添加计数值(考虑到最长交错子串可能在末尾),否则等到查找到前后不一样时才添加
    for i in range(0,len(string)-1):
        if string[i] != string[i+1]: 
            if i+2 == len(string): 
                count += 1 
                result_list.append(count)
            else:
                count += 1 
        else:
            result_list.append(count)
            count = 1  
    return max(result_list)

string = input()
print(fun(string))
发表于 2019-08-13 22:26:38 回复(0)
data = list(input())
flag = 1
num = []
for i in range(len(data)):
    k = i
    while k < len(data)-1 and data[k] is not data[k+1] :
        flag += 1
        k += 1
    else:
        num.append(flag)
        flag = 1
print(max(num))
发表于 2019-05-30 18:42:35 回复(0)
so easy.
s = input()
max_length = 1
cnt = 1
for i in range(len(s)):
    if i+1 <= len(s)-1 and s[i] != s[i+1]:
        cnt += 1
    else:
        max_length = cnt if cnt > max_length else max_length
        cnt = 1
print(max_length)

发表于 2019-05-23 14:47:05 回复(0)
s = list(input())
s.append(s[-1])
num = []
count = 1
if len(s) == 1:
    print(1)
else:
    for i in range(1,len(***r />         if s[i] != s[i-1]:
            count += 1
        else:
            num.append(count)
            count = 1
            continue
print(max(num))
发表于 2019-05-15 16:58:44 回复(0)
st = input()
pre = ''
count = 0
maxc = 1
for i in st:
    if i != pre:
        count += 1
        if maxc < count:
            maxc = count
    else:
        count = 1
    pre = i
print(maxc)

用了一个小指针来记录前一位数,count用来记录字符串当前遇到的01交替串,maxc用来记录整个字符串中最长的01交替串。

发表于 2019-04-22 21:45:25 回复(0)

python 多行

  1. 遍历 dp
def count(s):
    if len(s)==1:
        return 1
    else:
        dp =[1]*len(s)
        count=1
        for i in range(len(s)):
            if i+1<len(s) and s[i]!=s[i+1]:
                count+=1
            else:
                dp[i] = count
                count=1
        return max(dp)

print(count(input()))

发表于 2019-04-19 19:47:41 回复(0)
if __name__ == "__main__":
    line = list(input())
    s = list(map(int, line))
    index = 0
    ans = []
    while s:
        num = 1
        for i in range(len(s)-1):
            if s[i] != s[i+1]:
                num += 1
            else:
                break
        ans.append(num)
        s = s[i+1:]
    print(max(ans))

发表于 2019-03-31 16:36:46 回复(0)
记得考虑1111的时候,输出是1
s = input()
n = len(s)
count = 0
a = []

if n ==1:
    a.append(0)
else:
    for i in range(0,n-1):
        if s[i+1] != s[i]:
            count = count+1
            a.append(count)
        else:
            count = 0
            a.append(count)
        
print(max(a)+1)
发表于 2019-03-31 13:34:56 回复(0)
s = list(input())
lenth = 1
a = []
a.append(lenth)
for i in range(len(s)-1):
    if s[i] != s[i+1]:
        lenth += 1
        if i + 2 >= len(s) - 1:
            continue
        if s[i+1] == s[i+2]:
            a.append(lenth)
            lenth = 1
a.append(lenth)
print(max(a))

发表于 2019-03-28 12:06:22 回复(0)

下面的代码只通过80%的测试用例,问题出在哪,求各位大神指点一下
s = input()
ls = [] count = 1 if len(s) == 0:     print(0) for i in range(1, len(s)):     if s[i]!=s[i-1]:         count += 1     else:         ls.append(count)         count = 1 print(max(ls))

发表于 2019-03-15 11:49:00 回复(0)
def CountLength(s):
    if len(s)<2:
        return 0
    result=[]
    for i in range(len(s)-1):
        count=1
        a=s[i]
        for j in range(i+1,len(s)):
            if a!=s[j]:
                count+=1
                a=s[j]
            else:
                break
        result.append(count)
    return max(result)
if __name__=="__main__":
    s=input().strip()
    print(CountLength(s))

发表于 2019-03-05 11:37:48 回复(0)

python解法

遍历字符串,记录每个位置的最大01串长度。

string = input()
res, tmp_max = 1, 1
for i in range(len(string) - 1):
    if string[i] != string[i + 1]:
        tmp_max += 1
        res = max(res, tmp_max)
    else: # 如果下个位置组不成01串,则从下个位置重新开始记录当前最大长度
        tmp_max = 1
print(res)
发表于 2019-03-02 11:04:36 回复(4)
# 交错10串: python3
def fun(sr):
    # it only has one 1 or 0
    length=0
    length_old=0
    if len(set(sr))==1: length=0
    # it only has one num
    if len(sr)==1: length= 0
    for i in range(len(sr)-1):
        if sr[i]+sr[i+1]==1:
            length_old += 1
            # if we have a newly larger sequence, we update the length
            if length_old >= length: length = length_old
        else:
            # once we encounter a new sequence, we set again length to zero
            length_old=0
    return (length + 1)
    
if __name__=='__main__':
    s=[int(t) for t in list(input())]
    print(fun(s))

发表于 2019-02-20 14:55:23 回复(0)
//自己的编译器运行没问题,到这里就出错
nums=input()
s=[]
a=1
n=[]
for i in nums:
    s.append(i)
for i in range(len(s)-1):
    if s[i]!=s[i+1]:
        a=a+1
    else:
        n.append(a)
        a=1
b=max(n)
print(b)
发表于 2017-08-14 21:13:16 回复(0)
##python 版本
##思路:检测数组前后的数值是否相等,不相等则加1,若相等则清0,重新开始计数,
#直到遍历完全部数组的数
import sys
line=sys.stdin.readline().strip()
import sys
line=sys.stdin.readline().strip()
def get_longest_str(s):
    len_s=len(s)
    sample_len=1
    max_len=1
    for i in range(len_s-1):
        if s[i+1]!=s[i]:
            sample_len=sample_len+1           
        else:
            if sample_len>max_len:
                max_len=sample_len
            sample_len=1
    if sample_len>max_len:
        max_len=sample_len           
    return max_len
print get_longest_str(line)


发表于 2017-08-13 15:59:06 回复(1)

热门推荐

通过挑战的用户

查看代码