在不使用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 对表中的每一列调用内置函数?

如何在不调用索引函数或任何内置函数的情况下获取列表中的索引?

在不使用内置函数的情况下生成随机数 [关闭]

如何在不使用任何内置高斯函数的情况下对图像进行高斯模糊?

如何在不使用内置函数的情况下计算数字的平方根? [重复]