落ちるテストケースの予測がうまく行かず,WAを連発した
回答
#75835 No.342 一番ワロタww - yukicoder
以下のアルゴリズムで回答した.(見直したら一部簡略化出来た)
- 文字列の先頭から続くwを切りとる
- (追記):ここで,wが文字列中から消えた場合,空文字出力して即座に終了
- 正規表現で,"w+"を"w"に変換する.
- splitメソッドを使って,wでわけられるもののリスト1を作る
- 前の問題同様に,"w+"にマッチするリスト2を作る
- リスト2の要素中の最大長と一致するもののインデックスを取得したリスト3を作る
- リスト3に入っている要素を使って,リスト1のものを出力する
という感じでしょうか,複雑になってしまいました.
あと,余談ですが「wwwwwwだめです」というケースで落ちるような気がするんですが,どうなんでしょう?
(このケースの回答は空文字になるのが正解か?)
(追記:やっぱりダメだったので,修正しました)
import re def solve(): s = re.sub(r"^w+", "", input()) if s.count("w") == 0: print("") exit(0) removeW = re.sub(r"w+", "w", s) splitList = removeW.split("w") matchwords = re.findall(r"w+", s) maxW = max([len(c) for c in matchwords]) idxlist = [i for i in range(len(matchwords)) if len(matchwords[i]) == maxW] print("\n".join([splitList[i] for i in idxlist])) if __name__=="__main__": solve()