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

ความยาวสูงสุดของ 1 ติดต่อกันในสตริงไบนารีใน Python โดยใช้ฟังก์ชัน Map


บางครั้งเมื่อต้องจัดการกับการแทนค่าเลขฐานสองของตัวเลข เราอาจจำเป็นต้องค้นหาว่ามีเลข 1 ที่ต่อเนื่องกันกี่ตัวในตัวเลข บทความนี้แสดงวิธีค้นหาข้อมูลดังกล่าว 2 วิธี

การใช้ Split และ Map

ฟังก์ชัน split ใน python สามารถใช้เพื่อแยกสตริงที่กำหนดออกเป็นหลายสตริงได้ เราแบ่งมันด้วยศูนย์และใช้ฟังก์ชันแผนที่เพื่อค้นหาความยาวสูงสุดระหว่างการแยกที่สร้างขึ้น

ตัวอย่าง

data = '11110000111110000011111010101010101011111111'
def Max_len_cons_1(data):
print ("Maximum Number of consecutive one's: ",max(map(len,data.split('0'))) )
Max_len_cons_1(data)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Maximum Number of consecutive one's: 8

การใช้นิพจน์ทั่วไป

โมดูล re ใน python สามารถใช้เพื่อนับจำนวนสูงสุดของ 1 ติดต่อกัน ที่นี่เราพบรูปแบบของ 1+ ซึ่งระบุจำนวน 1 หรือมากกว่าที่มีอยู่ แล้วหาความยาวสูงสุดของรูปแบบเหล่านั้น

ตัวอย่าง

data = '11110000111110010011'
import re
the_ones = re.findall(r"1+", data)
print("The blocks of one's: ",the_ones)
print("Maximum Number of consecutive one's =", len(max(the_ones, key=len)))

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

The blocks of one's: ['1111', '11111', '1', '11']
Maximum Number of consecutive one's = 5