[英]Reverse order of characters of words in string
給定一個字符串,您需要顛倒句子中每個單詞的字符順序,同時仍保留空白和初始單詞順序。
示例1:輸入:“讓我們參加LeetCode競賽”輸出:“ s'teek ekat edoCteeL tsetnoc”
現在,我為它編寫了以下代碼,但它輸出,
Output: "s'teL ekat edoCteeL setnoc"
代替,
Output: "s'teL ekat edoCteeL tsetnoc"
我想念什么?
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
var result="";
var new_word= 0;
for (var i=0; i< s.length; i++)
{
if ((s[i] ==" ") || s[i+1] == undefined)
{
result=result+" "+ s.slice(new_word, i).split("").reverse().join("");;
new_word=i+1;
}
}
return result;
};
使用Array#map
更干凈的解決方案:
var str = "Let's take LeetCode contest"; var output = str.split(" ").map(function(word) { return word.split('').reverse().join(''); }).join(" "); console.log(output);
您可以使用Array#map完成
function reverseWords (str) { return str.split(" ") .map(function (word) { return word.split("").reverse().join("") }) .join(" "); } console.log(reverseWords("Let's take LeetCode contest")); // s'teL ekat edoCteeL tsetnoc
您可以使用簡單的單線處理它。
const reverse = (s) => s.split(' ').map(v => v.split('').reverse().join('')).join(' '); console.log(reverse("Let's take LeetCode contest"));
基本上,您嘗試測試具有錯誤索引的位置。
if (s[i] === " " || s[i + 1] === undefined) {
// ^^^^^
您需要檢查索引處的值並確定是否找到單詞。 在這種情況下,這就是硬道理。 要在不更改代碼含義的情況下到達該單詞,就是在最后一個索引上循環一個位置,然后進行檢查。 在這種情況下,最后一個單詞的長度正確,您可以將其取反。
var reverseWords = function (s) { var result = ""; var new_word = 0; for (var i = 0; i <= s.length; i++) { // ^^ loop over length if (s[i] === " " || !s[i]) { // ^ check at index result += s.slice(new_word, i).split("").reverse().join("") + (s[i] ? ' ' : ''); // ^^^^^^^^^^^^^^^^^ // apply space // only inbetween new_word = i + 1; } } return result; }; console.log(reverseWords("Let's take LeetCode contest" )); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
如果您喜歡ES6版本,則可以使用一些擴展語法...
在數組中獲取單個字符。
var string = "Let's take LeetCode contest", reversed = string.split(' ').map(w => [...w].reverse().join('')).join(' '); console.log(reversed);
var word="Let's take LeetCode contest"; var reversedWord=""; var arr=word.split(' '); for(i=0;i<arr.length;i++){ reversedWord+=arr[i].split('').reverse().join(''); reversedWord+=" "; } console.log(reversedWord);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.