森田賢二のleetCodeの使い方、解説、解答を毎日更新しているキャラクター

[leetcode]問題解答と解説。344. Reverse String [JavaScript]

[leetcode]問題解答と解説。344. Reverse String [JavaScript]

皆さんleetCode好きですよね。私も好きです。
なかなかやる機会がないのですよね。
leetCodeの使い方や解説ではなく実際に問題を解決するために何をしたか
をメモ書きして行きます

私はある決意をして今挑んでいます。
モチベーションを保つためだけにこれをやっています。

では今日のleetCode。
【344. Reverse String】の解決策と方法。自分がまず挑戦して
やったことをさらけ出します。

※下にある自分のコードは自分で設けた制限時間内に書けたところまです。

これは
「私は年末までこれを続けたらどんなleetCoderになるか」のシリーズ。
実験的ブログ更新です。

森田賢二のleetCode
森田賢二のleetCode

[leetcode] 344. Reverse String ルール

Write a function that reverses a string. The input string is given as an array of characters s.

You must do this by modifying the input array in-place with O(1) extra memory.

exampleは実際の問題ページを見てください

[leetcode] 344. Reverse String 問題ページ

344. Reverse String

[leetcode] 344. Reverse String

my code is not good

function reverseString(s: string[]): void {
       let result = []
    for (let i = 0, j = s.length -1; i <= j; i++, j--){
        result[i] = s[j]
        result[j] = s[i]
    }
    console.log(result)
};

手元では通るのにleetCodeのテストでは出力が違う

[leetcode] 344. Reverse String。discussの中の一つの解答例

数ある中からJavaScriptのもので、理解しやすい解説をピックアップしました。
discussから見ればさらにもっと違う方法で真似したくなるものがあるかもしれないですね

JavaScriptでfilterされている、discussはこちらから

ES6 Destructuring assignmentでやるパターン

344. Reverse String

/**
 * @param {character[]} s
 * @return {void} Do not return anything, modify s in-place instead.
 */
var reverseString = function(s) {
  let i = 0, j = s.length - 1;
  while (i < j) {
    // ES6 destructuring assignment
    [s[i], s[j]] = [s[j], s[i]];
    i++;
    j--;
  }
};

やりたかったことに近い回答

var reverseString = function(s) {

  let left = 0;
  let right = s.length - 1;

  while (left <= right) {
    [s[left],s[right]] = [s[right],s[left]]
    left++;
    right--;
  }
  return s;
};

recursion

/**
 * @param {character[]} s
 * @return {void} Do not return anything, modify s in-place instead.
 */
var reverseString = s => {
    reverse(0, s.length - 1);

    /**
     * @param {character[]} s
     * @return {void} Do not return anything, modify s in-place instead.
     */
    function reverse(i, j) {
        if (i >= j) return;
        [s[i], s[j]] = [s[j], s[i]];
        reverse(i + 1, j - 1);
    }
};

[leetcode] 344. Reverse Stringをやってみて感想

カテゴリー leetCode