Hướng dẫn giải của Nén xâu
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Ý tưởng:
- Khởi tạo một biến đếm ban đầu bằng 1 và một biến lưu trữ ký tự đầu tiên trong chuỗi.
- Duyệt qua từng ký tự trong chuỗi từ vị trí thứ 2 đến cuối chuỗi.
- So sánh ký tự hiện tại với ký tự trước đó:
- Nếu hai ký tự giống nhau, tăng biến đếm lên 1.
- Nếu hai ký tự khác nhau, tiến hành ghi lại ký tự trước đó và số lần lặp lại vào chuỗi kết quả.
- Sau khi kết thúc vòng lặp, ghi lại ký tự cuối cùng và số lần lặp lại vào chuỗi kết quả.
- Trả về chuỗi kết quả sau khi đã mã hóa.
Lời giải tham khảo
void printRLE(string str)
{
int n = str.length();
for (int i = 0; i < n; i++) {
// Count occurrences of current character
int count = 1;
while (i < n - 1 && str[i] == str[i + 1]) {
count++;
i++;
}
// Print character and its count
cout << str[i] << count;
}
}
Bình luận