【问题标题】:Count each character in string using recursion使用递归计算字符串中的每个字符
【发布时间】:2020-11-07 14:17:58
【问题描述】:

我已经尝试让一个函数使用递归计算字符串中的每个字符,现在已经有 2 天了。我试着写了一些伪代码,但我不能真正实现它。

伪代码:

编写一个以文本为参数的函数

为每个元素设置一个计数器

为元素中的每个字符使用键、值设置结果

基本情况:如果我们只有 1 个字符串,则返回字符和字符串

否则返回 function-1 直到最后一个元素被命中。

var tekst = "We have to count strings";

function countStrings(tekst) {
  var count = 0
  var result = {}

  if (count > tekst.lentgh) {
    count++
    return result
  } else {
    return countStrings(tekst-1) 
  }
}
console.log(countStrings(tekst))

【问题讨论】:

    标签: javascript string object


    【解决方案1】:

    考虑使用这个逻辑:

    var tekst = "We have to count strings";
    
    function countStrings(tekst) {
        if (tekst.length == 0) {
            return 0;
        }
    
        return 1 + countStrings(tekst.substring(1));
    }
    
    console.log(countStrings(tekst))

    这里的方法是,在递归的每一步,返回 1 加上从下一个字符开始的子字符串的长度。也就是说,我们递归输入字符串,一次一个字符,构建长度。这里的基本情况发生在countStrings() 的输入恰好是空字符串时。在这种情况下,我们只返回 0,并停止递归调用。

    【讨论】:

    • 我看到你的代码有效,但这个计算字符串的数量。不是字符和字符串的数量 - 但我可以用它做点什么,谢谢
    【解决方案2】:

    我决定尝试这个问题,这就是我想出的。绝对是一个具有挑战性的问题,所以如果你没有得到它也不要难过:

    var countStrings = function(tekst) {
        if (tekst.length === 0) return {};
      
        var obj = countStrings(tekst.slice(1));
      
        if (obj[tekst[0]]) {
            obj[tekst[0]] += 1;
        } else {
            obj[tekst[0]] = 1;
        }
      
        return obj;
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-15
      • 2013-07-21
      • 2022-07-08
      • 2012-10-04
      • 2013-11-15
      • 2014-03-31
      • 2019-09-01
      • 2022-01-09
      相关资源
      最近更新 更多