競技プログラミング用 知識集積所
ABC453A - Trimo
最終更新:
sport_programming
-
view
問題
必要知識
考え方
先頭の'o'を無視したいというのを、「これまでに'o'以外の文字が一度でも出ていたら、その文字を出力する」と考える。
すると、「これまでに'o'以外の文字が一度でも出ているか」をbool型変数に保管しておけばよさそう。
すると、「これまでに'o'以外の文字が一度でも出ているか」をbool型変数に保管しておけばよさそう。
ということで、以下で解ける。
まず、以下の2つを用意する。
まず、以下の2つを用意する。
そして、文字列を前から1文字ずつ見ていくforループを用意する。
そのループの中で以下の2つのことを実行する。
そのループの中で以下の2つのことを実行する。
最後に、できた文字列を忘れずにcoutすればおしまい。
解答例
注意点
別解
Sを直接処理する
vectorやstring型は、先頭を削除するのは苦手だが、末尾を削除するのは得意である。
そこで、「reverse()関数※で全部を逆順にする→whileループで末尾に'o'がある限り末尾を削除→また全部を逆順にする」とすると、先頭から'o'を消せる。
文字列が全部'o'の場合に「末尾の文字」が存在しなくなるので、文字列の長さが正であるか毎回確認する必要があることに注意。
解答例
そこで、「reverse()関数※で全部を逆順にする→whileループで末尾に'o'がある限り末尾を削除→また全部を逆順にする」とすると、先頭から'o'を消せる。
文字列が全部'o'の場合に「末尾の文字」が存在しなくなるので、文字列の長さが正であるか毎回確認する必要があることに注意。
解答例