Python có thư viện mạnh để thao tác dữ liệu. Cần tìm tích lớn nhất của 2 số liên tiếp trong chuỗi số lớn. Bài viết trình bày cách làm.
Sử dụng zip và max
Chuyển chuỗi thành list. Tạo cặp từ phần tử liên tiếp nhờ slicing. Nhân cặp bằng * và lấy max từ kết quả nhân của các cặp.
Ví dụ
Astring = '5238521' # Chuỗi cho trước
print("Given String : ", Astring)
# Chuyển thành list
Astring = list(Astring)
print("String converted to list:\n", Astring)
# Sử dụng max()
res = max(int(a) * int(b) for a, b in zip(Astring, Astring[1:])) # Kết quả
print("The maximum consecutive product is : ", res)
Kết quả
Chạy đoạn mã trên cho kết quả sau:
Given String : 5238521 String converted to list: ['5', '2', '3', '8', '5', '2', '1'] The maximum consecutive product is : 40
Sử dụng map và max
Tương tự cách trên. Dùng map() tạo cặp số nguyên liên tiếp. Dùng mul() từ module operator nhân cặp số. Cuối cùng max() lấy giá trị lớn nhất.
Ví dụ
from operator import mul
Astring = '5238521' # Chuỗi cho trước
print("Given String : ", Astring)
# Chuyển thành list
Astring = list(Astring)
print("String converted to list:\n", Astring)
# Sử dụng max()
res = max(map(mul, map(int, Astring), map(int, Astring[1:]))) # Kết quả
print("The maximum consecutive product is : ", res)
Kết quả
Chạy đoạn mã trên cho kết quả sau:
Given String : 5238521 String converted to list: ['5', '2', '3', '8', '5', '2', '1'] The maximum consecutive product is : 40