Giả sử chúng ta có hai số bắt đầu và kết thúc, chúng ta phải tìm một danh sách được sắp xếp các số nguyên sao cho mọi số e trong phạm vi [bắt đầu, kết thúc] đều bao gồm và các chữ số của e đều tăng liền nhau. Một ví dụ về số liên tục tăng là 5678, nhưng 169 thì không.
Vì vậy, nếu đầu vào là start =10 end =150, thì đầu ra sẽ là [12, 23, 34, 45, 56, 67, 78, 89, 123]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- s:=tất cả 9 chữ số dưới dạng chuỗi "123456789"
- a:=một danh sách mới
- đối với tôi trong phạm vi từ 0 đến 8, hãy thực hiện
- đối với j trong phạm vi i + 1 đến 9, thực hiện
- x:=(chuỗi con của s từ chỉ số i đến j-1) dưới dạng số
- nếu bắt đầu <=x <=end, thì
- chèn x vào một
- đối với j trong phạm vi i + 1 đến 9, thực hiện
- sắp xếp danh sách a và trả về
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(start, end): s = "123456789" a = [] for i in range(9): for j in range(i + 1, 10): x = int(s[i:j]) if start <= x <= end: a += (x,) return sorted(a) start = 10 end = 150 print(solve(start, end))
Đầu vào
10, 150
Đầu ra
[12, 23, 34, 45, 56, 67, 78, 89, 123]