覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

LeetCode - Reverse String

LeetCode の Reverse String を解いてみます。

問題の概要

  • インプット(引数)
    • charの配列
      • 例:[’h’, 'e', 'l', 'l', 'o']
  • アウトプット(引数)
    • 引数で与えられた配列を逆順にします。アウトプットは戻り値で返すのではなく、引数の配列の内容を逆順にします
    • 例にあげた引数の場合、['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;
        }
    }
}

特に難しさも無いのかなというイメージです。
理由は不明ですがこの問題の評価あんまり高くないです。