翻转含空格的单词字符串顺序(滤掉空格)
程序员文章站
2022-03-09 18:09:32
...
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。
说明:
- 无空格字符构成一个单词。
- 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
- 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
解法一
解题思路:
1.先用trim()把字符串两端的空格去掉
2.再用split()把字符串根据空格分隔为一个个单词块存储在数组中
3.接着用filter()过滤掉数组中的纯空格
4.用reverse()进行数组反转
5.最后用join()把数组元素用空格连接为字符串
解:
var reverseWords = function(s) {
//去掉字符串首尾的空格字符 返回新字符串 不是在原字符串上进行修改
var str = s.trim();
//将该字符串按空格分成一个个的块 用数组存储
var arr = str.split(' ');
//将数组中的空格元素过滤
var arr1 = arr.filter(function(item){
if(item == ''){
return false;
}
return true;
})
//将数组元素翻转
arr1.reverse();
//将数组元素用空格连接为字符串
var str1 = arr1.join(' ');
return str1;
};
代码简化:
var reverseWords = function(s) {
return s.trim().split(' ').filter(item => item != '').reverse().join(' ');
}
解法二
解题思路:
1.先用trim()把字符串两端的空格去掉
2.再用replace()把字符串中剩余的连续空格替换为单个空格
3.接着用split()把字符串根据空格分成一个个的块,存储在数组中
4.用reverse()方法反转数组
5.最后用join()把数组元素用空格连接为字符串
解:
var reverseWords = function(s) {
return s.trim().replace(/\s+/g,' ').split(' ').reverse().join(' ');
或
return s.trim().split(/\s+/g).reverse().join(' ');
}