Official

C - XX反転/XX reverse Editorial by sounansya


この解説では 0-indexed 、つまり \(S\) の先頭を \(0\) 文字目として数えます。

\(2\) つの X のインデックスをそれぞれ \(x,y\) とします。

このとき、出力する文字列は以下の \(3\) つの文字列を連結したものになります:

  • \(S\)\(0\) 文字目から \(x-1\) 文字目までを取り出した文字列
  • \(S\)\(x+1\) 文字目から \(y-1\) 文字目までを反転させた文字列
  • \(S\)\(y+1\) 文字目から \(|S|-1\) 文字目までを取り出した文字列

文字列の反転は Python であればスライスを用いると簡単に演算することができます。詳しくは実装例を参考にしてください。

実装例(Python3)

s = input()
x = []
for i in range(len(s)):
    if s[i] == "X":
        x.append(i)
assert len(x) == 2
print(s[: x[0]] + s[x[1] - 1 : x[0] : -1] + s[x[1] + 1 :])

posted:
last update: