Giả sử chúng ta có một mã bưu chính, chúng ta phải kiểm tra xem nó có hợp lệ hay không. Một mã bưu chính hợp lệ có các tiêu chí sau:
Nó phải là một số trong khoảng từ 100000 đến 999999 (cả hai đều bao gồm).
Nó không được chứa hơn một cặp chữ số lặp lại xen kẽ.
Vì vậy, nếu đầu vào là s = "700035", thì đầu ra sẽ là True vì nó nằm trong khoảng 100000 đến 999999 và không có chữ số liên tiếp nào giống nhau.
Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau:
- n := độ dài s
- nb := 0
- ok := True
- với i từ 0 đến n - 1, thực hiện
- ok := ok và s[i] là chữ số
- với i từ 0 đến n-3, thực hiện
- nb := nb + (1 nếu s[i] giống s[i+2] ngược lại 0)
- trả về (true khi ok đúng và n bằng 6 và s[0] khác '0' và nb < 2), ngược lại false
Ví dụ
Hãy xem triển khai sau để hiểu rõ hơn:
def solve(s):
n = len(s)
nb = 0
ok = True
for i in range(n):
ok = ok and s[i].isdigit()
for i in range(n-2):
nb += s[i] == s[i+2]
return ok and n == 6 and s[0] != '0' and nb < 2
s = "700035"
print(solve(s))
Đầu vào
"700035"
Đầu ra
True