Bài toán: Cho chuỗi s chỉ chứa chữ cái. Kiểm tra xem thứ tự xuất hiện của chữ thường và chữ hoa (khi chuyển thường thành hoa) có giống nhau không.
Ví dụ
s = "piPpIePE":
Chữ thường: p, i, p, e → "pipe" → uppercase "PIPE"
Chữ hoa: P, I, P, E → "PIPE"
Giống nhau → True.
Triển khai Python
def solve(s):
lower = ""
upper = ""
for ch in s:
if 'A' <= ch <= 'Z':
upper += ch
else:
lower += ch
return lower.upper() == upper
# Test
print(solve("piPpIePE")) # True
print(solve("aAbB")) # True: lower="ab"→"AB", upper="AB"
print(solve("Ab")) # False: lower="b"→"B", upper="A"
Kết quả
True
Giải thích
- Tách chuỗi thành hai chuỗi con: chỉ chữ thường và chỉ chữ hoa (giữ thứ tự).
- Chuyển chuỗi thường thành hoa, so sánh với chuỗi hoa.
- Điều kiện: cùng multiset ký tự VÀ cùng thứ tự tương đối.
- Độ phức tạp: O(n) thời gian, O(n) không gian.