Cover Image for [Boot camp for Beginners] B - AcCepted [Rust]

[Boot camp for Beginners] B - AcCepted [Rust]

概要

AtCoder Problems: Boot camp for Beginners をRustで解いてみる

学んだことmemo

  • 文字列も短いしそんなに処理もないから楽勝?
  • と思ったけど比較条件が多かった
  • 以下の3つの条件を見ながら fold で畳み込んでいけば最終的な回答ができる
  • S の先頭の文字は大文字の A である。

    • これは先頭だけ見ればOK
  • S の先頭から 3 文字目と末尾から 2 文字目の間(両端含む)に大文字の C がちょうど 1 個含まれる。

    • これが地味にだるい
      • bool に畳み込もうとしたが、奇数個/偶数個などの場合考えると面倒
    • C の数をカウントする方向で畳み込んで、最後に 1 かどうかみる
      • 先頭から 3 文字目のindex > 末尾から 2 文字目 のindex になる場合がある ( S=4|S| = 4 の時とか)
      • 後者は max(s.len() - 2, 2) にしておくと安全
  • 以上の AC を除く S のすべての文字は小文字である。

    • 最初この条件を読み飛ばしてた
    • これは すべて なので、true && 小文字かどうかbool に畳み込めば一発

参考