欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

翻转含空格的单词字符串顺序(滤掉空格)

程序员文章站 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(' ');
 }