JavaScriptデータ構造とアルゴリズムの問題はできますか?
1482 ワード
LeetCodeの第557題
557.反転文字列の単語III
文字列を指定すると、文字列の各単語の文字順を反転させながら空白と単語の初期順序を保持します.
例1:
入力:「Let's take LeetCode contest」
出力:「s'teL ekat edoCteeL tsetnoc」
注意:文字列では、各単語は単一のスペースで区切られ、文字列には追加のスペースはありません.
1.一般的な考え方は、split('')を通して単語ごとに分離し、各単語を反転させ、join(')を統合する方法です.
2.一番早い例という考え方は、上のようなものとあまり変わらないです.
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(' ')
};
もちろんスプリットは正則に合わせて、スプリット(')はスプリット(/\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
}
もし好きだったら、もっと多くの情報が欲しいなら、ここを突いて、スターを歓迎します.