LeetCode 第557题
557. 反转字符串中的单词 III
给定一个字符串,你须要反转字符串中每一个单词的字符递次,同时仍保存空格和单词的初始递次。
示例 1:
输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”
注重:在字符串中,每一个单词由单个空格离开,而且字符串中不会有任何分外的空格。
1.通例思绪 经由过程split(‘ ‘)将每一个单词离开 然后将每一个单词翻转后 用join(‘ ‘)合并成一个要领
let reverseWords = (s) => {
return s
.split(' ')
.map(item => {
return item
.split('')
.reverse()
.join('')
}).join(' ')
};
固然split能够合营正则,split(‘ ‘)能够替换为split(/\s/g)
2.最快的类型 这类思绪实在和上面这类 没什么差异
var reverseWords = function (s) {
// "Let's take LeetCode contest"
// -> tsetnoc edoCteeL ekat s'teL 直接翻转
// -> "s'teL ekat edoCteeL tsetnoc" 然后经由过程' '切割后再翻转 不须要轮回
return s.split('').reverse().join('').split(' ').reverse().join(' ')
}
2.比较差别的思绪
let reverseWords = (s) => {
let str = ''//存出效果
let begin = 0//单词最先的位置
for (let i = 0; i < s.length; i++) {
if (s[i] === ' ') {
//当碰到' ' ,将前面的单词举行翻转
for (let j = i - 1; j >= begin; j--) {
str += s[j]
}
str += ' ' //增添距离
begin = i + 1 //更新单词最先的位置
}
}
// 将末了一个单词 翻转
for (let n = s.length - 1; n >= begin; n--) {
str += s[n]
}
return str
}
假如喜好或许想要更多的信息,能够戳这里,迎接star