問題
英小文字だけでできた単語 s が、標準入力から 1 行で届きます。s を最後の文字から最初の文字へ向かって並べ直し、1 行で出してください。
- s の長さは 1 文字以上、100 文字以下です
- s には英小文字 (a から z) だけが入ります
入力と出力の例
例 1
入力
hello出力
olleh例 2
前から読んでも後ろから読んでも同じ単語は、そのままの形で出ます。
入力
level出力
levelヒント
ヒント 1
文字列は、文字が順に並んだ物です。番号 (添え字) で 1 文字ずつ取り出せます。
ヒント 2
空の文字列を用意し、前から読んだ文字を「いまの結果の前」に足していくと、最後に逆の並びができあがります。
ここから解答です。先に自分で書いてみてから読むと、身につきやすくなります。
解答例
Python
Python
s = input()
print(s[::-1])JavaScript
Node.js で動かす形です。
JavaScript
const s = require("fs")
.readFileSync(0, "utf8")
.trim();
const reversed = [...s]
.reverse()
.join("");
console.log(reversed);解説
Python の s[::-1] はスライスという書き方です。[始め:終わり:歩幅] の歩幅に -1 を渡すと、後ろから 1 文字ずつ取り出した新しい文字列ができます。
JavaScript の文字列には、並びを逆にする道具がありません。[...s] で 1 文字ずつの配列に分け、配列の reverse() で逆にし、join("") でつなぎ直します。
道具を使わずに書くなら、ヒント 2 の形になります。result = ch + result のように、読んだ文字を結果の前に足していきます。面接やテストで「スライスを使わずに」と言われたときは、この形で書けると安心です。
どちらの書き方も、文字を 1 回ずつ見るので、手間は文字数に比例します。
