给定一个字符串,逐个翻转字符串中的每个单词。
示例 1:
输入: "the sky is blue"输出: "blue is sky the"
示例 2:
输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:
输入: "a good example"输出: "example good a"解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
说明:
进阶:
const reverseString = function(s) {return s.trim().replace(/\s+/g, ' ').split(' ').reverse().join(' ');};
const reverseString = function(s) {let start = 0,end = s.length - 1;// 找到不是空格的起始位置while (s.charAt(start) === ' ') start++;while (s.charAt(end) === ' ') end--;let word = '';let deque = [];while (start < end) {let char = s.charAt(start);// 如果该位置是空格且 word 不为空字符串,说明前面是一个单词,就将 word 放入队列头部if (char === ' ' && word) {deque.unshift(word);word = '';} else if (char !== ' ') {word += char;}start++;}// 最后一个单词不能再拆分了deque.unshift(word);return deque.join(' ');};