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