如何在python中找到最大的连续整数集?

时间:2017-08-23 15:39:41

标签: python python-3.x binary

我正在查看一组非常大的二进制数据,它位于一个单独的文件中。挑战在于找到最大的连续数字1和0。我已经从Python中访问了该文件(我使用Python btw),并且能够编码以找出0和1的总数。任何帮助都会非常感激,因为我在使用Python时是编码的初学者。干杯。 这就是我迄今为止所做的:

filename = "C:/01.txt"
file = open(filename, "r")
count_1 = 0
count_0 = 0

for line in file:
    count_0 = count_0 + line.count("0")
    count_1 = count_1 + line.count("1")
    pass

print("Number of 1s = " + str(count_1))
print("Number of 0s = " + str(count_0))

我实际上没有开始编码以找到连续的数字。

3 个答案:

答案 0 :(得分:3)

要查找某个子字符串的最长出现次数,可以使用如下函数:

def longest_segment(sub, string):
    return max(m.group() for m in re.finditer(r'(%s)\1*' % sub, string))

这可以通过在sub中找到所提供的子字符串string的所有匹配项并返回最长的字符串来实现。

答案 1 :(得分:1)

这是一个简单的解决方案:循环读取数据,计算读取的连续1次,读取0时(意味着到达一个段的末尾)将它的长度与到目前为止发现的连续1的最长段进行比较。

def getMaxSegmentLength(readable):
    current_length= 0
    max_length= 0

    for x in readable:
        if x == '1':
            current_length+= 1
        else:
            max_length= max(max_length, current_length)
            current_length= 0

    return max(max_length, current_length)


def main():
    # open a file located in G:/input.txt in read mode and name the file object: inputf
    with open('G:/input.txt', 'r') as inputf:

        # put all the text in filef in s
        s= inputf.read()

        # get the longest streak of 1s in string s
        n= getMaxSegmentLength(s)

        print(n)



if __name__ == '__main__':
    main()

答案 2 :(得分:-1)

s=raw_input() #read s from file in this case
zero=0
one=0
zz=0
oo=0
for i in list(s):
    if i=='1':
        if zz>=1:
            zero=max(zero,zz)
            zz=0
        oo+=1
    else:
        if oo>=1:
            one=max(one,oo)
            oo=0
        zz+=1
if oo>=1:
    one=max(oo,one)
if zz>=1:
    zero=max(zero,zz)
print zero,one
#O(n)