B - 高橋くんと文字列圧縮 | AtCoder Beginner Contest 019

less than 1 minute read

B - 高橋くんと文字列圧縮 | AtCoder Beginner Contest 019

解法

回答用の文字列を用意し,前から順に文字列を見ていき新しい文字が出てきたらそれを回答用の文字列に追加し,同じ文字の間は個数をカウントし,違う文字が出てきたらそのカウントを回答用の文字列に連結する.これを繰り返す.

コーナーケース検討

特になし

実装

string s; cin >> s;
string ans = "";
char pre = ' ';
REP(i, s.size()) {
    if(s[i] != pre) {
        pre = s[i];
        ans += s[i];
        int cnt = 1;
        while(i < s.size() - 1 && pre == s[i + 1]) {
            i++;
            cnt++;
        }
        ans += to_string(cnt);
    }
}
cout << ans << endl;

Submission

データ構造・アルゴリズム