反转字符串中单词的顺序
给定一个输入字符串 s,反转单词的顺序。一个单词定义为一系列非空格字符。s 中的单词至少由一个空格分隔。返回一个以相反顺序排列的单词字符串,单词之间由单个空格分隔。
关键要求:
- 删除单词之间以及字符串开头/结尾处的多余空格。
- 反转单词的顺序(而不是字符)。
示例 1:
输入:s = "the sky is blue" 输出:"blue is sky the"
示例 2:
输入:s = " hello world " 输出:"world hello" 解释:反转后的字符串不应包含前导或尾随空格。
示例 3:
输入:s = "a good example" 输出:"example good a" 解释:需要将两个单词之间的多个空格减少为反转字符串中的单个空格。
解决方案:
以下 JavaScript 代码使用正则表达式高效地解决了这个问题:
var reverseWords = function(s) { // 使用正则表达式替换多个空格为单个空格,并去除首尾空格 return s.replace(/s+/g, ' ').trim().split(' ').reverse().join(' '); };
代码解释:
-
s.replace(/s+/g, ' '): 使用正则表达式 /s+/g 替换一个或多个空格 (s+) 为单个空格。g 标志确保替换所有匹配项。
-
.trim(): 去除字符串开头和结尾的多余空格。
-
.split(' '): 根据空格将字符串分割成一个单词数组。
-
.reverse(): 反转单词数组的顺序。
-
.join(' '): 将反转后的单词数组连接成一个字符串,单词之间用单个空格分隔。
这个解决方案简洁明了,有效地处理了多余空格和单词反转的问题。 它避免了复杂的循环和条件语句,提高了代码的可读性和效率。