[leetcode]問題解答と解説。344. Reverse String [JavaScript]
皆さんleetCode好きですよね。私も好きです。
なかなかやる機会がないのですよね。
leetCodeの使い方や解説ではなく実際に問題を解決するために何をしたか
をメモ書きして行きます
私はある決意をして今挑んでいます。
モチベーションを保つためだけにこれをやっています。
では今日のleetCode。
【344. Reverse String】の解決策と方法。自分がまず挑戦して
やったことをさらけ出します。
※下にある自分のコードは自分で設けた制限時間内に書けたところまです。
これは
「私は年末までこれを続けたらどんなleetCoderになるか」のシリーズ。
実験的ブログ更新です。
[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 問題ページ
[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でやるパターン
/**
* @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;
};
/**
* @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);
}
};