Giả sử chúng ta có một chuỗi chữ thường s, chúng ta phải kiểm tra xem có thể chọn thứ tự somesubsequestion của các ký tự trong s sao cho - 1. Sự khác biệt của hai chỉ mục liên tiếp bất kỳ của các ký tự này là giống nhau 2. Các ký tự tạo thành chuỗi "programmingquestion"
Vì vậy, nếu đầu vào giống như "pzrzozgzrzazmzmziznzgzqzuzezsztzizozn", thì đầu ra sẽ là True
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- p:=Một mảng chỉ số có p
- r:=Một mảng chỉ số có r
- đối với mỗi j trong p, thực hiện
- với mỗi k trong r, thực hiện
- nếu k> j, thì
- nếu "câu hỏi lập trình" trong chuỗi con của s từ chỉ số j đến kích thước của s, bằng cách bỏ qua ký tự k-j, thì
- trả về True
- nếu "câu hỏi lập trình" trong chuỗi con của s từ chỉ số j đến kích thước của s, bằng cách bỏ qua ký tự k-j, thì
- nếu k> j, thì
- với mỗi k trong r, thực hiện
- trả về Sai
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class Solution: def solve(self, s): p = [i for i, c in enumerate(s) if c == "p"] r = [i for i, c in enumerate(s) if c == "r"] for j in p: for k in r: if k > j: if "programmingquestion" in s[j:len(s):k-j]: return True return False ob = Solution() s = "pzrzozgzrzazmzmziznzgzqzuzezsztzizozn" print(ob.solve(s))
Đầu vào
"pzrzozgzrzazmzmziznzgzqzuzezsztzizozn"
Đầu ra
True