[Buổi 20][Chuỗi][RDD] Bài 21: Slime
Slime
Bối cảnh
Có \(N\) con slime xếp hàng từ trái sang phải. Màu sắc của các con smile này sẽ được cho dưới dạng một chuỗi \(S\) có độ dài \(N\) gồm các chữ cái tiếng Anh in thường. Con smile thứ \(i\) tính từ trái sang phải có màu tương ứng với ký tự thứ \(i\) trong \(S\).
Yêu cầu
Các con smile liền kề nhau có cùng màu sẽ hợp nhất thành một con smile lớn hơn mà không thay đổi màu sắc. Nếu có con smile nào đó liền kề với nhóm này trước khi hợp nhất, thì con smile đó giờ đây sẽ liền kề với con smile lớn mới.
Cuối cùng, sẽ có bao nhiêu con smile?
Input
Dữ liệu nhập được cung cấp từ đầu vào chuẩn theo định dạng sau:
\(N\)
\(S\)
Output
In ra số lượng con smile cuối cùng.
Ràng buộc
\(1 \leq N \leq 10^5\)
\(|S| = N\)
\(S\) bao gồm các chữ cái tiếng Anh in thường.
Ví dụ 1
Input
10
aabbbbaaca
Output
5
Giải thích ví dụ
Cuối cùng, các con smile này sẽ hợp nhất thành abaca.
Ví dụ 2
Input
5
aaaaa
Output
1
Giải thích ví dụ
Ví dụ 1
- Input:
10 aabbbbaaca - Giải thích: Các slime sẽ hợp nhất thành "abaca", tổng cộng là 5 slime cuối cùng.
Ví dụ 2
- Input:
5 aaaaa - Giải thích: Tất cả slime cùng màu sẽ hợp nhất thành 1 slime duy nhất.
Tất cả các con smile sẽ hợp nhất thành một con.
Thông tin học tập
- Buổi: B20
- Concepts: std::string, getline, index, find, substr, basic transformations
- Giới hạn kiến thức: B01-B20
- Time limit: 1 second
- Memory limit: 20 MB
- Point: 15
Comments