题目描述:
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:“Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”
提示:
在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
知识点:
- 字符串的split():将一个字符串分割为子字符串,并返回一个字符串数组
- 数组的map():通过指定函数对数组中每个元素进行处理,并返回一个处理后的新数组
- 数组的join():将数组的每个元素根据传入的分隔符连接成一个字符串
思路:
- 将字符串转化为数组,利用split按空格(/\s/g)进行分隔
- 遍历数组中的每一项(每个单词),进行反转,返回一个新数组
- 将新数组转换为字符串(每个单词以空格分隔)
原始代码:
var reverseWords = function(s) {
// 将字符串转化为数组,利用split按空格进行分隔
let arr = s.split(' ');
// 遍历数组中的每一项(每个单词),进行反转,并返回一个新数组
let result = arr.map(item => {
// item是一个字符串,没有reverse方法,需先转化为数组进行反转,后再转为字符串
return item.split('').reverse().join('');
})
// 将新的数组转换为字符串(每个单词以空格分隔)
return result.join(' ');
};
优化后的代码:
var reverseWords = function(s) {
return s.split(' ').map(item => {
// item是一个字符串,没有reverse方法,需先转化为数组进行反转,后再转为字符串
return item.split('').reverse().join('')
}).join(' ');
};