Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาความยาว 1 ติดกันมากที่สุดใน Binary String ด้วย Python

กำหนดสตริงบाइनนารี หาจำนวน 1 ที่ติดต่อกันมากที่สุด

วิธีที่ 1: split + map

data = '11110000111110000011111010101010101011111111'

max_len = max(map(len, data.split('0')))
print(f"Maximum consecutive 1's: {max_len}")
# 8

วิธีที่ 2: Regular Expression

import re

data = '11110000111110010011'
ones_blocks = re.findall(r'1+', data)
print("Blocks:", ones_blocks)
print("Max length:", len(max(ones_blocks, key=len)))
# Blocks: ['1111', '11111', '1', '11']
# Max length: 5

วิธีที่ 3: Loop แบบ Manual (O(n), O(1) space)

def max_consecutive_ones(s):
    max_count = current = 0
    for ch in s:
        if ch == '1':
            current += 1
            max_count = max(max_count, current)
        else:
            current = 0
    return max_count

print(max_consecutive_ones('11110000111110000011111010101010101011111111'))  # 8

เปรียบเทียบ

วิธีความชัดเจนประสิทธิภาพหน่วยความจำ
split+mapสูงO(n)O(n) สร้าง list
regexปานกลางO(n)O(n) สร้าง list
manual loopสูงO(n)O(1) ดีที่สุด

สรุป

ใช้ manual loop สำหรับประสิทธิภาพดีที่สุด split+map เขียนสั้นที่สุด