3 - 344. Reverse String

https://leetcode.com/problems/reverse-string/

var reverseString = function(s) {
    for (let i = 0; i <= (s.length - 1)/2; i++) {
        let temp = s[i];
        s[i] = s[s.length - 1 - i];
        s[s.length - 1 - i] = temp;
    }
    return s;
};

we can also use ES6 destructuring assignment

var reverseString = function(s) {
    for (let i = 0; i <= (s.length - 1)/2; i++) {
        [s[i], s[s.length - 1 - i]] = [s[s.length - 1 - i], s[i]]
    }
    return s;
};

refactor for circulation

var reverseString = function(s) {
    let i = 0, j = s.length - 1 - i;
    while (i <= j) {
        [s[i], s[j]] = [s[j], s[i]];
        i++;
        j--;
    }
    return s;
};

refactor for circulation with ES6 destruction

var reverseString = function(s) {
   for (let [i, j] = [0, s.length - 1]; i < j; i++, j--) {
       [s[i], s[j]] = [s[j], s[i]]
   }
   
    return s;
};

with recursion

var reverseString = function(s) {
   reverse(0, s.length - 1);
    
   function reverse(i, j) {
       if (i >= j) return;
       [s[i], s[j]] = [s[j], s[i]];
       reverse(++i, --j);
   }
    
    return s;
};

I invoke reverse with the parameters i++ and j++ first which will led to Maxnum call stack size exceeded

the reason is that the two parameters didn't increased after the first execute

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容