あなたのタスク:ASCII文字のみを含む文字列が与えられたときに、逆方向に文字列を出力/返すプログラム/関数を作成します。
例:
1)入力
Hello, World!
2)入力で一意の文字に番号を付けます。(|
読みやすいようにパイプ()で区切られた入力文字列)
H|e|l|l|o|,| |W|o|r|l|d|!
1 2 3 4 5 6 7 8 9 10
3)重複する文字の場合、その文字の最初の出現箇所を見つけ、最初の文字と同じ番号で重複文字に番号を付けます。
H|e|l|l|o|,| |W|o|r|l|d|!
1 2 3 3 4 5 6 7 4 8 3 9 10
4)文字列を逆にしますが、数字は逆にしません。
!|d|l|r|o|W| |,|o|l|l|e|H
1 2 3 3 4 5 6 7 4 8 3 9 10
5)繰り返し番号の上の文字を削除します。(アスタリスクで表される削除された文字。)
!|d|l|*|o|W| |,|*|l|*|e|H
1 2 3 3 4 5 6 7 4 8 3 9 10
6)削除された文字を、削除された文字が上にある数字の最初の出現の上に表示される文字で置き換えます。
!|d|l|l|o|W| |,|o|l|l|e|H
1 2 3 3 4 5 6 7 4 8 3 9 10
7)出力
!dlloW ,olleH
テストケース:
Input -> Output
"Hello, World!" -> "!dlloW ,olleH"
"18464399" -> "99343488"
"Code Golf" -> "floG eloC"
"abcdefgABCDEFG" -> "GFEDCBAgfedcba"
"Mmm, marshmallows" -> "swwllwmhsrwm mms"
"15147" -> "74751"