Giải Nén Xâu - LQDOJ: Le Quy Don Online Judge

Tiếng Việt

Tiếng Việt English

Đăng nhập

Đăng ký

Giải nén xâu

Xem PDF Nộp bài Tất cả bài nộp Các bài nộp tốt nhất Xem hướng dẫn Tác giả: admin Dạng bài 04 string (Chuỗi) Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Trong máy tính, để tiết kiệm bộ nhớ, người ta thường tìm cách nén dữ liệu. Trong việc nén văn bản, ta sư dụng một phương pháp đơn giản đươc mô tả thông qua ví dụ sau:

Ví dụ:

Với xâu ký tự: "aaaabbb" sẽ được nén lại thành xâu "4a3b". Với xâu ký tự "aaab" sẽ được nén lại thành "3ab".

Cho một xâu \(S\) gồm các ký tự thuộc tập \('a'...'z'\). Gọt \(St\) là xâu nén của xâu \(S\) theo phương pháp được mô tả như trên. Xâu \(St\) gồm \(N\) ký tự thuộc tập các ký tự \('a'...'z'\), \('0',...'9'\)

Hãy giải nén xâu \(St\) để được xâu gốc \(S\).

Input

  • Một xâu ký tự \(St\).

Output

  • Một xâu ký tự \(S\) sau khi giải nén.
  • Đề đảm bảo số lượng kí tự sau khi giải nén không quá \(10^{7}\).

Constraints

  • \(1 \leq N \leq 10000\)

Example

Test 1

Input 2m2a3b4ezh Output mmaabbbeeeezh

Bình luận

  • 2 hieuminh0157 8:09 a.m. 25 Tháng 7, 2024 include <iostream>

    using namespace std;

    int main() { string s; cin >> s; int d = 0; for (int i = 0; i < s.size(); i++) { if (isdigit(s[i])) { d = d * 10 + s[i] - '0'; } else { if (d == 0) { cout << s[i]; continue; } for (int j = 1; j <= d; j++) cout << s[i]; d = 0; } } }

  • 12 SPyofgame 9:33 p.m. 7 Tháng 6, 2020 chỉnh sửa 2 Spoiler Alert

    Hint 1

    Lặp lại quá trình nhận số x và kí tự c tiếp sau nó

    Xuất x lần kí tự c

    Lưu ý kiểm tra trường hợp không nhận được số x nào (c là kí tự đơn lẻ* thì xuất c

    Reference AC code | O(n) time | O(n) auxiliary space | String

    C++inlineboolisDigit(charc){return'0'<=c&&c<='9';} intmain() { strings; getString(s); for(inti=0;i<sz(s);++i) { if(isDigit(s[i])==false){cout<<s[i];continue;} intx=0; while(i<sz(s)&&isDigit(s[i]))x=10*x+(s[i++]-'0'); while(x--)cout<<s[i]; } return0; }

    Reference AC code | O(n) time | O(1) auxiliary space | String, Online Solving

    C++inlineboolisLowLatin(charc){return'a'<=c&&c<='z';} inlineboolisDigit(charc){return'0'<=c&&c<='9';} intmain() { for(charc=getchar();isLowLatin(c)||isDigit(c);c=getchar()) { if(isDigit(c)==false){cout<<c;continue;} intx=0; while(isDigit(c))x=10*x+(c-'0'),c=getchar(); while(x--)cout<<c; } return0; }

Từ khóa » Giải Nén Xâu Trong Pascal