ABC076 C - Dubious Document 2
そもそも全パターン試さないといけないことに気づかず、WA連発していたが、 気づいたところで、なかなか実装し切れなかった。 意外とPythonでの文字列の置換や結合でハマったのでメモ。
- 文字列に対して、部分の置き換えはできない
- replaceを使えばできるが、開始位置の指定はできない
- 文字列のままでも、スライスを使って
①置換対象の前+②置換後文字列+③置換対象の後
と組み合わせてあげればよいが、添え字で混乱するので苦手 - 一度リストにして、置換後文字列を投げ込んで、また文字列に戻すのが、可読性いい気がする(個人の好みです)
- (同じ長さの)複数文字列から1文字ずつ取り出して、それぞれ突き合わせるようなときは、for in にzip組み合わせると便利
def resolve(): S=input() T=input() cand=[] for i in range(len(S)-len(T)+1): temp=S[i:i+len(T)] isMatch=True for (s,t) in zip(temp,T): if(s!=t and s!="?"): isMatch=False if isMatch: tempS=list(S) tempS[i:i+len(T)]=T tempS="".join(tempS) tempS=tempS.replace("?","a") cand.append(tempS) if len(cand)==0: print("UNRESTORABLE") else: cand.sort() print(cand[0])