151. 颠倒字符串中的单词 JavaScript实现

151. 颠倒字符串中的单词 JavaScript实现,第1张

151. 颠倒字符串中的单词

题目链接

一、API解法

var reverseWords = function(s) {
    // 1、使用trim去掉头尾的空格
    // 2、使用split 将字符串按空格分割成字符串数组,至少一个空格.
    // 3、使用 reverse 将字符串数组进行反转;
    // 4、使用空格进行相连
    return s.trim().split(/\s+/).reverse().join(" ");
};
二、双端队列

将分割和反转的任务利用双端队列进行实现

var reverseWords = function(s) {
    // 去掉空格
    s = s.trim()

    // 使用指针遍历,用队列进行反转--从头部压入元素。最后直接将队列中的元素用空格连接起来。
    let left = 0, right = s.length;
    let queue=[],word="";  // word来暂存每个单词
    
    // 用左右指针的终止条件好写,因为字符串中间有空格
    while(left <= right){
        // charAt提取出下标对应的字符
        let char = s.charAt(left);

        // 判断char是否是空格。即将单个单词提取出来,存放到队列中
        // 为了应对多个空格情况,在拼接单个单词的时候.注意要判断word是否为空
        if(char == " " && word){
            queue.unshift(word);  // 从头部插入,达到反转的效果
            word = ""; // 再次置空,迎接下一个的单词
        }else if(char != " "){
        	// 使用+运算符来拼接字符串
            word += char;
        }

        left++;
    }
     queue.unshift(word)
    // 将队列中的单词用单个空格进行连接
    return queue.join(" ")
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1320550.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-11
下一篇 2022-06-11

发表评论

登录后才能评论

评论列表(0条)

保存