Cho chuỗi alphanumeric s. Thay mọi ký tự không phải chữ số bằng khoảng trắng, tách lấy các số nguyên. Đếm số giá trị nguyên khác nhau (bỏ qua số 0 dẫn đầu).
Ví dụ: s = "ab12fg012th5er67" → các số: "12", "012", "5", "67". Giá trị nguyên: 12, 12, 5, 67 → 3 giá trị khác nhau (12, 5, 67).
Thuật toán giải quyết
- Duyệt chuỗi, gom nhóm chữ số liên tiếp thành chuỗi k.
- Gặp ký tự không phải chữ số: nếu k không rỗng, chuyển int(k) thêm vào danh sách nums, reset k.
- Cuối chuỗi: nếu k không rỗng, thêm int(k).
- Trả về len(set(nums)).
Ví dụ triển khai
def solve(s):
nums = []
k = ""
for i in range(len(s)):
if ord(s[i]) > 47 and ord(s[i]) < 58:
k += s[i]
else:
if k != "":
nums.append(int(k))
k = ""
if k != "":
nums.append(int(k))
return len(set(nums))
s = "ab12fg012th5er67"
print(solve(s))Đầu vào
"ab12fg012th5er67"
Đầu ra
3