[python]backjun/単語反転2/17413号/文字列


質問する
単語反転2題リンク
文字列Sが与えられると、その文字列の中で単語だけを反転させたい.
まず、文字列Sは、以下のルールを遵守する.
小文字("a"-"z")、数字("0"-"9")、スペース(")、特殊文字("<"、">")のみで構成されます.
文字列の先頭と末尾はスペースではありません.
「<」と「>」は文字列内で交互に現れ、「<」が先に現れる.また、2文字の個数は同じです.
ラベルは「<」で始まり、「>」で終わる長さが3より大きい部分文字列で、「<」と「>」の間にはアルファベット小文字とスペースしかありません.単語は小文字と数字からなる部分文字列で、連続する2つの単語は1つのスペースで区切られています.ラベルは単語ではなく、ラベルと単語の間にスペースがありません.
入力
最初の行は文字列Sを与える.Sの長さは100000以下である.
baekjoon online judge

<ab cd>ef gh<ij kl>
しゅつりょく
1行目に文字列Sの単語を逆さに出力します.
noojkeab enilno egduj

<ab cd>fe hg<ij kl>
方法

  • ">"を"<"に置き換えて分割("<")すると、タグの文字はリストの奇数インデックス(1、3、5、7)に無条件に存在します.

  • リスト内の奇数の2番目の単語をスペースで分割した後、各単語を反転して追加します.
  • コード#コード#
    
    strs = input()
    answer = ''
    li = strs.replace('>','<').split('<')
    
    for i in range(len(li)):
        if i % 2 != 0 :
            answer += '<'+ li[i] + '>'
        else :
            non_tag_li = li[i].split(' ')
            answer += ' '.join([word[::-1] for word in non_tag_li])
        
    print(answer)