簡體   English   中英

字符串中單詞的字符順序顛倒

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM