問題
https://atcoder.jp/contests/abc076/tasks/abc076_c
方針
s, tの文字数が少ないので、作れるものは全部作り、最小のものを表示する。正規表現を用いるのが楽。sに?がひとつも無い時には、sをそのまま表示する。
解答
#input
s = str(input())
t = str(input())
#output
n = len(s)
m = len(t)
answer = "UNRESTORABLE"
#sの頭からtが入るか見ていく
#t = ab
#s = a???
#上の時abaaとaaabではaaabの方が辞書順で小さい。作れるものは全部作り、最小のものを答えにする。
#sの?部分は何でも良い。
#正規表現を用いる
import re
u = s.replace("?", ".")
if m > n:
print(answer)
exit()
elif s == u:
print(s)
exit()
word_list = []
for i in range(n-m+1):
pre_temp = u[:i]
temp = u[i:i+m]
post_temp = u[i+m:]
match_temp = re.search(temp, t)
if match_temp:
word_list.append(pre_temp + t + post_temp)
else:
continue
word_list2 = []
for item in word_list:
temp = item.replace(".", "a")
word_list2.append(temp)
if word_list2:
print(min(word_list2))
else:
print(answer)
提出結果
https://atcoder.jp/contests/abc076/submissions/26108737
関連リンク
AtCoder
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
コメント