题目
来源: I.翻转单词顺序
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。
示例
解题思路及代码
1. 思路
主要的思路就是,从字符串最后一个单词开始,倒着遍历字符串,每取出字符串中的每一个单词放入结果数组中要间隔一个空格,取得规程中要跳过字符串中的空格。
采用双指针来实现,去除字符串的头尾空格,设置双指针i j,当i,j分别指向每个单词的左右边界时,取出对应单词,直到i遍历至字符串第一个字符,取出单词放入结果数组中后,直接返回结果数组。
2. 代码
var reverseWords = function(s) {
s = s.trim();
var res = [];
var i = s.length - 1;
var j = i; // i指向单词的首字母,j指向单词的尾字母,遍历单词的时候,j保持不变
while (i >= 0) {
while (s[i] != " " && i >= 0) {
i--;
}
res.push(s.slice(i + 1, j + 1) + " ");
while (s[i] == " " && i >= 0) {
i--;
}
j = i;
}
return res.join("").trim();
};