目录
1,题目
2,代码
1,利用js函数
2,双指针
3,双指针加队列
3,学习与总结
1,正则表达式 / \s+ /:
2,结合使用 split 和正则表达式:
1,题目
给你一个字符串 s
,请你反转字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s
中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
注意:输入字符串 s
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
重点看例3的效果
2,代码
1,利用js函数
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
return s.trim().split(/\s+/).reverse().join(' ');
};
2,双指针
字符串的遍历
字符串函数 substring
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
// 去掉收尾的空格
s=s.trim();
let i = s.length -1,j=i;
let res = [];
while(i >= 0){
while(i>=0&&s[i]!= ' ') i--;
// substring有返回值 且前闭后开
res.push(s.substring(i+1,j+1));
while(i >=0 && s[i] === ' ') i--;
j=i;
}
return res.join(' ').trim();
};
3,双指针加队列
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
// 去掉收尾的空格
s=s.trim();
let i = 0,j=i;
let res = [];
while(i < s.length ){
while(i < s.length && s[i]!= ' ') i++;
// substring有返回值 且前闭后开
res.unshift(s.substring(j,i));
while(i < s.length && s[i] === ' ') i++;
j=i;
}
return res.join(' ').trim();
};
3,学习与总结
1,正则表达式 / \s+ /
:
- 正则表达式是一种文本模式,用于匹配字符串中的字符组合。在这个表达式中,
\s
和+
有特殊的含义。 \s
:代表空白字符的匹配项,包括空格、制表符(tab)、换行符等。+
:紧跟在\s
后面,表示匹配一个或多个前面的字符。因此,\s+
匹配一系列的一个或多个连续空白字符。
2,结合使用 split
和正则表达式:
- 当将正则表达式
/\s+/
作为split
方法的参数时,意味着字符串将按照一个或多个连续空白字符来分割。 - 这意味着无论是空格、制表符、还是换行符,只要是连续出现的空白字符,都将被用作分割点。分割后,原字符串就被分解成多个部分,每个部分是原字符串中由非空白字符组成的序列,这些部分被存储在一个数组中。
字符串操作函数有待更加熟练!!!
重点在于 函数的利用和方法的优化。