Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Độ dài lớn nhất của chuỗi 1 liên tiếp trong chuỗi nhị phân dùng Map function trong Python

Khi xử lý biểu diễn nhị phân của số, đôi khi chúng ta cần tìm số lượng 1 liên tiếp nhiều nhất. Bài viết này cho thấy hai cách để tìm ra điều đó.

Sử dụng Split và Map

Hàm split trong Python có thể tách chuỗi cho trước thành nhiều chuỗi. Chúng ta tách bằng số 0 và hàm map dùng để tìm độ dài lớn nhất trong các phần tách được.

Ví dụ

du_lieu = '11110000111110000011111010101010101011111111'

def do_dai_max_1_lien_tiep(du_lieu):
    print("Số lượng 1 liên tiếp tối đa: ", max(map(len, du_lieu.split('0'))))

do_dai_max_1_lien_tiep(du_lieu)

Kết quả

Chạy mã trên cho kết quả sau:

Số lượng 1 liên tiếp tối đa: 8

Sử dụng biểu thức chính quy

Mô-đun re trong Python cũng có thể dùng để đếm số 1 liên tiếp tối đa. Ở đây ta tìm mẫu 1+ cho biết một hoặc nhiều số 1 liên tiếp. Sau đó tìm độ dài lớn nhất trong các mẫu đó.

Ví dụ

du_lieu = '11110000111110010011'
import re
cac_khoi_1 = re.findall(r"1+", du_lieu)
print("Các khối 1: ", cac_khoi_1)
print("Số 1 liên tiếp tối đa =", len(max(cac_khoi_1, key=len)))

Kết quả

Chạy mã trên cho kết quả sau:

Các khối 1: ['1111', '11111', '1', '11']
Số 1 liên tiếp tối đa = 5