Giả sử chúng ta có chuỗi s và ký tự c, cần kiểm tra xem tất cả các lần xuất hiện của c trong s có xuất hiện liên tiếp nhau hay không. Nếu c không có trong s, cũng trả về True.
Ví dụ, s = "bbbbaaaaaaaccddd", c = 'a', đầu ra True.
Các bước giải quyết:
- flag := False, index := 0, n := độ dài chuỗi.
- Trong khi index < n:
- Nếu string[index] == c:
- Nếu flag là True, trả về False (xuất hiện lần 2 không liên tiếp).
- Trong khi index < n và string[index] == c: index += 1 (bỏ qua khối liên tiếp).
- flag := True.
- Ngược lại: index += 1.
- Nếu string[index] == c:
- Trả về True.
Xem ví dụ dưới đây để hiểu rõ hơn:
Ví dụ
def solve(string, c):
flag = False
index = 0
n = len(string)
while index < n:
if string[index] == c:
if flag:
return False
while index < n and string[index] == c:
index += 1
flag = True
else:
index += 1
return True
s = "bbbbaaaaaaaccddd"
c = 'a'
print(solve(s, c))
Đầu vào
"bbbbaaaaaaaccddd", "a"
Đầu ra
True