AtCoder Beginner Contest 293の解説記事です。
目次
ABC293 A – Swap Odd and Even
問題
問題文の要約は以下の通りです。
問題の要約
英小文字からなる長さが偶数の文字列Sに対して、i番目の文字列をSiとする。
S2S1S4S3 … S2nS2n-1のように偶数番目と奇数番目を入れ替えた文字列を求めよ。
入力
S
出力
答えを出力せよ。
解法1
for
文で順番に入れ替える。
解説
for
文で前から順番に文字を入れ替えます。
S[2i]
とS[2i+1]
を0番目からlen(S)//2
番目まで入れ替えるので次のようになります。
for i in range(len(S)//2):
S[2*i],S[2*i+1] = S[2*i+1],S[2*i]
解答
S = list(input())
for i in range(len(S)//2):
S[2*i],S[2*i+1] = S[2*i+1],S[2*i]
print(*S,sep='')
解法2
入れ替えたと思って入れ替え後の順番で出力する。
解説
S2S1S4S3 … S2nS2n-1のように偶数番目と奇数番目と入れ替える前の文字を表示すればよいです。
0番目からlen(S)//2
番目までS[2i+1]
とS[2i]
を順に表示すればよいので次のようになります。
for i in range(len(S)//2):
print(S[2*i+1],end='')
print(S[2*i],end='')
解答
S=input()
for i in range(len(S)//2):
print(S[2*i+1],end='')
print(S[2*i],end='')