トピック分析
| 入力文字列を反転させる関数を書きなさい。入力文字列は文字配列 char[] として与えられます。 |
別の配列のために余分な領域を割り当てないでください。問題を解決するためには、O(1)個の余分な領域を使って、入力配列をその場で修正しなければなりません。
例1:
["h","e","l","l","o"]
["o","l","l","e","h"]
例2:
["H","a","n","n","a","h"]
["h","a","n","n","a","H"]
トピックのイラスト
文字列を反転させるにはダブル・ポインタを使います。
入力文字列が ["h", "e", "l", "l", "0"] であるとします。
- leftとrightはそれぞれ最初と最後の要素を指すように定義します。
- 左<右の場合はスワップ。
- 入れ替え, 左++
- 左まで== right
プロセスを以下に示します:
Go言語の例
以上の分析に基づき、次のような解が得られます:
//Go
func reverseString(s []byte) {
left := 0
right := len(s) - 1
for left < right {
s[left], s[right] = s[right], s[left]
left++
right--
}
}
私が書いたすべての解答と各問題の完全な図解をeBookにまとめました。





