在不使用javascript中的内置函数的情况下逐字反转字符串
Posted
技术标签:
【中文标题】在不使用javascript中的内置函数的情况下逐字反转字符串【英文标题】:Revers a string word by word without using inbuilt function in javascript 【发布时间】:2021-12-09 16:26:35 【问题描述】:function reverse1(str)
let r = "";
for (let i = str.length - 1; i >= 0; i--)
r += str[i];
return r;
console.log(reverse1("I like this program very much"));
输出:// hcum yrev margorp siht ekil I
但预期的输出:I ekil siht margorp yrev hcum
请任何人回答这个问题....???
【问题讨论】:
您在哪里尝试检测一个单词的结尾和另一个单词的开头?你在哪里检查空格? 【参考方案1】:您正在反转整个字符串。如果要使用单个函数并假设字符串仅包含空格,则可以遍历字符串的每个字符。
如果遇到空格,可以将其附加到结果中。如果您遇到另一个字符,您可以将其添加到临时字符串以构建该单词的反转版本。
然后当下一个字符是空格或者是迭代中的最后一个字符时,将 word 的反转版本附加到结果中。
function reverse1(str)
let result = "", tmp = "";
for (let i = 0; i < str.length; i++)
if (str[i] === ' ')
result += ' '; continue;
tmp = str[i] + tmp;
if (str[i + 1] === undefined || str[i + 1] === ' ')
result += tmp; tmp = "";
return result;
console.log(reverse1("I like this program very much"));
console.log(reverse1(" I like this program very much "));
console.log(reverse1("abc"));
【讨论】:
【参考方案2】:遍历原始字符串并反转单个单词。
function reverseUtil(str)
let r = "";
for (let i = str.length - 1; i >=0; i--)
r += str[i];
return r;
function reverse1(str)
let r = "", tmp = "";
for (let i = 0; i < str.length; i++)
if (str[i] == ' ')
r += reverseUtil(tmp) + ' ';
tmp = "";
else tmp += str[i];
// last word
r += reverseUtil(tmp);
return r;
console.log(reverse1("I like this program very much"));
【讨论】:
以上是关于在不使用javascript中的内置函数的情况下逐字反转字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 c# 中的内置函数的情况下获得投球手的最低和最高分数
如何在不指定列名的情况下使用 bigquery 对表中的每一列调用内置函数?