Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 352 B - Typing | 茶コーダーが解くAtCoder

atcoder.jp

実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 55

問題概要

英小文字からなる文字列  S をタイピング入力しようとしたところ、バックスペースキーが壊れていたため誤って入力された文字は消去されず、実際に入力された文字列は文字列  T となった。また、英小文字以外のキーを誤って押してしまうことはなかった。  T のうち高橋君が誤って入力した文字でないものを「正しく入力された文字」と定義するとき、正しく入力された文字が  T の何文字目であるかを出力せよ。

制約

  •  S, T の長さは  1 以上  2 \times 10^5 以下。

考察

 S, T を走査するカウンタとしてそれぞれ  i, j を用意し、  j を更新しながら  S_i = T_j のときだけ  j+1 を出力し、  i をインクリメントする。  i, j は 0-indexed なので、出力時に  j に 1 を加えるのを忘れないこと。

コード

#include <bits/stdc++.h>
using namespace std;

// ======================================== //

int main()
{
    string S, T;
    cin >> S >> T;

    int i = 0, j = 0;
    while (i != S.size())
    {
        if (S[i] == T[j])
        {
            cout << j + 1 << " ";
            i++;
        }
        j++;
    }
    cout << endl;
}

atcoder.jp

実装時間: 5分