Chuỗi Thu Gọn

Xem dạng PDF

Gửi bài giải

Điểm: 0,01 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: THUGON.INP
Output: THUGON.OUT

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Một chuỗi kí tự thuần nhất được định nghĩa là chuỗi chỉ bao gồm các kí tự latinh in hoa từ ~'A'~ đến ~'Z'~. Chuỗi kí tự thuần nhất có thể được thu gọn thành các kí tự kèm theo số lần xuất hiện liên tiếp của kí tự đó (Số lần xuất hiện sẽ đứng ngay trước kí tự, nếu số lần xuất hiện là ~1~ thì không cần ghi số ~1~). Ví dụ: Chuỗi thuần nhất ~AABBCCCDDEAAA~ được thu gọn thành chuỗi ~2A2B3C2DE3A~.

Yêu cầu: Đọc các chuỗi thuần nhất từ tệp dữ liệu THUGON.INP có độ dài không quá ~255~ kí tự và chuyển thành chuỗi thu gọn.

Input

Từ tệp văn bản THUGON.INP gồm nhiều dòng, mỗi dòng là một chuỗi thuần nhất.

Output

Đưa ra tệp văn bản THUGON.OUT gồm nhiều dòng, mỗi dòng tương ứng là chuỗi thu gọn thỏa mãn yêu cầu đề bài.

Sample Input 1

AABBCCCDDEAAA
ABBBBBDDEE

Sample Output 1

2A2B3C2DE3A
A5B2D2E

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    tathaolqd  đã bình luận lúc 1, Tháng 12, 2025, 13:49

    // ██╗ ██╗ █████╗ ██████╗ ████████╗ █████╗ ████████╗ // ██║ ██║██╔══██╗██╔═══██╗ ╚══██╔══╝██╔══██╗╚══██╔══╝ // ███████║███████║██║ ██║ ██║ ███████║ ██║ // ██╔══██║██╔══██║██║ ██║ ██║ ██╔══██║ ██║ // ██║ ██║██║ ██║╚██████╔╝ ██║ ██║ ██║ ██║ // ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝

    include <bits/stdc++.h>

    define endl '\n'

    define maxn 100005

    define MOD 100000000000007

    define Task "THUGON"

    define pb push_back

    define int long long

    define gr greater<int>()

    define lg length()

    define us unsigned long long

    define fi first

    define se second

    pragma GCC target ("avx2")

    pragma GCC optimize ("O3")

    pragma GCC optimize ("unroll-loops")

    pragma GCC optimize ("O2")

    pragma GCC optimize ("Os")

    using namespace std; const long long MOD1=1000000005; const long long MOD2=1000000007; const long long MOD3=1000000009; signed main() { iosbase::syncwith_stdio(false); cin.tie(NULL); if(fopen(Task".inp","r")){ freopen(Task".inp", "r", stdin); freopen(Task".out", "w", stdout); } string s; while(cin>>s) {

    int d=1;
    string res="";
    int j=1,i=0;
    while(i&lt;s.lg)
    {
       if(s[i]==s[i+1])
       {
           d++;
       }else{
            if(d>1)
            {
                 res+=to_string(d);
            }
    
        res+=s[i];
        d=1;
       }
       i++;
    }
    cout<&lt;res&lt;&lt;endl;
    }
    
    return 0;
    

    }


  • -2
    thanngocmai  đã bình luận lúc 5, Tháng 8, 2025, 3:58

    nếu dãy là ABABAB thì có thành 3AB ko ạ, sao code này của t bị WA nhỉ:

    include<bits/stdc++.h>

    using namespace std; using ll = long long; const ll maxn = 1e6 + 5;

    string s, res; ll n; int main() { iosbase::syncwith_stdio(0); cin.tie(0); cout.tie(0);

    freopen("THUGON.inp","r",stdin);
    freopen("THUGON.out","w",stdout);
    
    while(cin>>s)
    {
        n = s.size();
        s = " "+s;
        res = "";
        for(int i=1; i&lt;n; i++)
        {
            ll dem = 1;
            while(s[i] == s[i+1] && i+1 <=n)
            {
                dem++;
                i++;
            }
            if(dem >1)
            res += to_string(dem);
            res += s[i];
        }
        cout<&lt;res&lt;&lt;'\n';
    
    }
    

    }


    • 1
      minhkhangvophuoc  đã bình luận lúc 28, Tháng 8, 2025, 8:34 sửa 2

      0 có 3AB từ ABABAB đâu, cùng lắm nếu muốn 3AB thì phải từ AAAB -> 3AB mới đúng. Đếm từng kí tự thôi 0 gộp lại.

      Còn nữa: cout<&lt;res<<'\n'; sai cú pháp.


    • 0
      haoluu2009  đã bình luận lúc 28, Tháng 8, 2025, 7:40 chỉnh sửa

      bạn đang dùng 1-based kìa, thì vòng for phải là for(int i = 1; i <= n; i++). Nma nếu dùng for thì mỗi lần duyệt xong i lại tăng lên 1 đơn vị sẽ bị duyệt lặp lại đó, bạn dùng while thử xem. Với cả sau khi cộng dồn vào rồi thì dịch chuyển i -> j để tránh lặp. Code: https://ideone.com/uftNHO


  • 0
    VoTheHao99  đã bình luận lúc 2, Tháng 7, 2025, 14:30 chỉnh sửa

    nếu mà bài ko nhập số n chuỗi thì nhập tới khi nào v mn?


    • 1
      SmileyBoi  đã bình luận lúc 6, Tháng 7, 2025, 2:11

      string s; while(cin >> s){ //code }


  • -15
    nguyencongquang0209  đã bình luận lúc 27, Tháng 4, 2025, 8:12 sửa 2

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.