给定一个字符串,您需要反转每个字符的字符顺序 句子中的单词,同时仍保留空格和首字母 字顺序。
示例1:输入:"让我们参加LeetCode比赛" 输出:" s' tek 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;
};
答案 0 :(得分:2)
使用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);
&#13;
答案 1 :(得分:1)
您可以使用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
答案 2 :(得分:1)
你可以用一个简单的单行代码处理它。
const reverse = (s) => s.split(' ').map(v => v.split('').reverse().join('')).join(' ');
console.log(reverse("Let's take LeetCode contest"));
答案 3 :(得分:1)
基本上你试图测试一个错误索引的位置。
if (s[i] === " " || s[i + 1] === undefined) {
// ^^^^^
您需要检查索引处的值并确定是否找到了单词。在这种情况下,它是硬道理。要在不改变代码的mutch的情况下达到该单词,就是在最后一个索引上循环一个位置然后检查。在这种情况下,最后一个单词的长度是正确的,您可以将其反转。
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);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
如果您喜欢ES6版本,可以使用一些spread syntax ...
来获取数组中的单个字符。
var string = "Let's take LeetCode contest",
reversed = string.split(' ').map(w => [...w].reverse().join('')).join(' ');
console.log(reversed);
&#13;
答案 4 :(得分:0)
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);
&#13;