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

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

概要

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

学んだことmemo

  • 部分文字列...めんどくさいやつだ...
  • ACGT 以外を含まないかどうか
    • chars で文字に分解して, vec!['A', 'C', 'G', 'T'].contains(&c) を all でみればいい
  • 部分文字列の中で一番長さが長いものを見つける
    • 最初の文字列がACGT文字列でなければ、head/tail どちらか一文字を削って同じ処理をする
    • 大きかった方を採用する
    • という流れを再起的にやれば二分探索的な感じで解けないか
    • 終端処理は文字列の長さが0だったら0、もしくはACGT文字列なら長さを返す
ATCODER (x)
  |--- ATCODE (x)
  |     |--- ATCOD (x)
  |     |     |--- ATCO (x)
  |     |     |     |--- ATC (3)
  |     |     |     `--- TCO (x)
  |     |     |           |--- TC (2)
  |     |     |           `--- CO (x)
  |     |     |                |--- C (1)
  |     |     |                `--- O (x)
  |     |     |                     `--- '' (0)
  |     |     `--- TCOD (x)
  |     `--- TCODE (x)
  |           |--- TCOD (x)
......省略......
  |           `--- CODE (x)
  `--- TCODER
        |--- TCODE (x)
......省略......
        `--- CODER (x)
......省略......
        
  • ↑こんな感じ
  • 正解だった
    • が、これは文字列が長い場合はoverflowする
    • 文字列が長い場合の正解はわからない