LeetCode の Reverse String を解いてみます。
問題の概要
- インプット(引数)
- charの配列
- 例:[’h’, 'e', 'l', 'l', 'o']
- charの配列
- アウトプット(引数)
- 引数で与えられた配列を逆順にします。アウトプットは戻り値で返すのではなく、引数の配列の内容を逆順にします
- 例にあげた引数の場合、['o', 'l', 'l', 'e' , 'h'] がアウトプットになります
- 補足
- 答えを求めるために新しい配列をallocate(生成)しないでくださいと書いてあります
答え
特に小細工もなく、配列の先頭から順に対応するindex同士の要素をswapするようにしています。
配列の中心位置まで進めば全て入れ替わって、逆順になっていることになります。
class Solution { public void reverseString(char[] s) { if (s.length <= 1) { return; } int lastIndex = s.length - 1; char temp; for (int i = 0; i < s.length / 2; i++) { temp = s[i]; s[i] = s[lastIndex - i]; s[lastIndex - i] = temp; } } }
特に難しさも無いのかなというイメージです。
理由は不明ですがこの問題の評価あんまり高くないです。