Hướng dẫn cho Giải nén xâu
Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Authors:
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++
inline bool isDigit(char c) { return '0' <= c && c <= '9'; }
int main()
{
string s;
getString(s);
for (int i = 0; i < sz(s); ++i)
{
if (isDigit(s[i]) == false) { cout << s[i]; continue; }
int x = 0;
while (i < sz(s) && isDigit(s[i])) x = 10 * x + (s[i++] - '0');
while (x--) cout << s[i];
}
return 0;
}
Reference AC code | O(n) time | O(1) auxiliary space | String, Online Solving
C++
inline bool isLowLatin(char c) { return 'a' <= c && c <= 'z'; }
inline bool isDigit(char c) { return '0' <= c && c <= '9'; }
int main()
{
for (char c = getchar(); isLowLatin(c) || isDigit(c); c = getchar())
{
if (isDigit(c) == false) { cout << c; continue; }
int x = 0;
while (isDigit(c)) x = 10 * x + (c - '0'), c = getchar();
while (x--) cout << c;
}
return 0;
}
Bình luận