题目链接
一、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(" ")
};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)