競技プログラミング日記

主に AtCoder の記事です

AtCoder Regular Contest 108B

 

ARC108B

fox の文字が全て異なっているので楽. s を先頭から調べていき,スタックに積んでいく. スタックの方で後ろ3文字がfoxになったら消せばよい. O(N)で解ける. 実装は,スタックでなくvector で行った.

使っている記号,マクロ等 "https://ecsmtlir.hatenablog.com/entry/2022/12/23/131925"

int main() {
  ll n;
  cin >> n;
  string s; cin >> s;

  string t;
  rep(i,n){
    t.push_back(s[i]);
    ll x = t.length();
    if(x >= 3 && t.substr(x-3, 3) == "fox"){
      t.erase(t.end()-3, t.end());
    }
  }
  cout << t.length() << endl;

  return 0;
}