AtCoder ABC 018 B – 文字列の反転 Python解説

スポンサーリンク

文字列の反転

半角の小文字アルファベットのみからなる文字列 S が与えられる。 文字列 S に対して以下の操作 1 から操作 N までを番号の昇順に行う。左からl​i​番目の文字を左端、ri番目の文字を右端とした部分文字列を逆順にする。

例えば,文字列 abcdef に対して、左から 3 番目の文字 c を左端、左から 5 番目の文字 e を右端とした部分文字列を逆順にすると、文字列 abedcf が得られる。

操作 1 から操作 N までを番号の昇順に行った後の文字列を出力せよ。

AtCoder Beginner Contest 018「文字列の反転」

文字列の部分反転の問題です。文字列Sに対し、指定された番号の文字列を変数reverseに格納したあと、先頭と末尾の文字列を足して新たな文字列Sを作るようにしました。

s = input()
n = int(input())

for _ in range(n):
    l, r = map(int, input().split())
    reverse = s[l-1: r][::-1] # *1
    s = s[:l-1] + reverse + s[r:]
    
print(s)

(*1)取得する文字列の後ろに[::-1]を使うことで、文字列を反転させることができます。