Hai người chơi Amal (từ nguyên âm) và Bimal (từ phụ âm) tạo tất cả các substring từ chuỗi s. Điểm của mỗi substring = số lần xuất hiện trong s. Tìm người thắng và điểm số.
Ví dụ: s = "BANANA" → Bimal thắng 12 điểm.
Quan sát quan trọng
Không cần sinh tất cả substring. Với ký tự tại vị trí i, có len(s) - i substring bắt đầu bằng ký tự đó. Chỉ cần cộng dồn len(s) - i cho mỗi ký tự nguyên âm/phụ âm.
Ví dụ mã nguồn
def solve(word):
vowels = set('AEIOU')
p1 = 0 # Bimal (phụ âm)
p2 = 0 # Amal (nguyên âm)
for i, c in enumerate(word):
if c in vowels:
p2 += len(word) - i
else:
p1 += len(word) - i
if p1 > p2:
return 'Bimal', p1
elif p2 > p1:
return 'Amal', p2
else:
return 'Draw'
word = "BANANA"
print(solve(word)) # ('Bimal', 12)
Đầu vào / Đầu ra
Input: "BANANA"
Output: ('Bimal', 12)