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.

Lời giải này đang bị ẩn cho đến khi bạn chọn mở ra.

Chúng tôi khuyên bạn nên tự thử giải bài trước. Việc mở lời giải có thể làm lộ mất ý tưởng chính trước khi bạn có cơ hội tự giải.

Bạn phải đăng nhập để mở lời giải này.

Đăng nhập

Ý tưởng:

  1. 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.
  2. Duyệt qua từng ký tự trong chuỗi từ vị trí thứ 2 đến cuối chuỗi.
  3. 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ả.
  4. 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ả.
  5. 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

Please read the guidelines before commenting.


Không có bình luận tại thời điểm này.