gpt4 book ai didi

algorithm - 使用递归计算数组中的对象数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:39:44 24 4
gpt4 key购买 nike

我在递归方面遇到了一些问题,为了理解它,我正在尝试自己编造问题并解决它们。这个特殊的问题让我感到困惑:将其视为字符串形式的输入:

[[a,b,c],[[d]],[[e,f]],[g],h,i,[[j,[k,l]]]]

目标是找到列表中事物的总数以及列表本身。对于此示例,结果将是:12+10 = 22请注意,输入不是数组,它是一个字符串。还有 a,b,...任何东西都可以使用,比如数字、字符串等。

[12345,0.34,["afv",24]]

这是我的想法,但我会说明为什么我不能实现它:
我们编写了一个开始迭代字符串的函数。它应该计算 [] 之间的总数。每当函数到达 [ 时,它就会召回自己遍历剩余的字符串。这样它就可以深入到数组中。
这些是我的问题:

  1. 不知道我的想法对不对。
  2. 如果我的想法是正确的,基本情况是什么。
  3. 我怎样才能确保它计算里面的所有东西,不管它们是什么?(我的意思是我怎样才能确保它对数字、字符串等的处理相同)
  4. 我觉得函数体应该是这样的(我这里用的是java,但我觉得这里的语言不是很重要):

    public static int counter(String a){
    整数总和= 0;
    //一些代码来迭代字符串
    //一些代码来检查条件,如果需要调用方法
    //一些代码来添加要求和的对象和数组的数量
    返回总和;
    }

如果代码应该像我说的那样,那么我该如何填充正文?感谢您的宝贵时间。

最佳答案

根据您设计递归算法的方式和输入的大小,您可能会遇到递归堆栈溢出的常见问题,在这种情况下您会进行非常深的递归并耗尽内存空间

如果您不必必须使用递归,那么这是一个不同的迭代 pythonic 解决方案,但您应该能够将其转换为 Java。

您想为每个以逗号分隔的项目递增计数。但是,如果该元素具有“]”字符,您就知道它是嵌入列表的一部分。通过计算右大括号和元素,您可以得到总数。

已更新以处理带有嵌入逗号的字符串

# Function for removing the chars between apostrophes
def remove(s,c):
while(s.find(c) != -1):
i = s.find(c) # find the first instance of c but ' or " in our case
i2 = s.find(c,i+1) # find the second instance
s = s[0:i]+s[i2+1:] # Remove the string
return s
return s

s = "[['a,b,c'],[1,2,3]]"
s = s[:-1] # remove the last list char
total = 0
s = remove(s,'\'')
s = remove(s,'"')
l = s.split(',')
for el in l:
total+=1
total+= el.count(']')
print(total)

关于algorithm - 使用递归计算数组中的对象数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53774457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com