gpt4 book ai didi

java - 遍历嵌套的括号内容

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:12 26 4
gpt4 key购买 nike

我发现了很多类似的问题,但主要是关于正则表达式的,而不是我想做的。

Given a string = "(content4(content3(content2(content1...))))

我想首先获取叶括号内容 (content1...) 而不是 content2 上一级 (content2(content1...)) 比上一级……等等。我有一些非常复杂的解决方案,但我想知道是否有更简单的方法。这似乎最好递归地解决,但我还找不到好的解决方案。也许有人已经解决了类似的问题。大家有什么想法或建议吗?

提前谢谢你的帮助,我很感激

添加:

字符串也可以是这样的:

string = "(content4(content3(content2(content1...);content5(content6...))))"

最佳答案

使用堆栈。

将您的字符串分成 3 种类型的元素。

一个。左括号。

两个连续的左括号之间的字符串,或者如果没有第二个左括号,则为左括号和紧邻的右括号之间的字符串。

右括号

该方法类似于以下内容。

  1. Push the left parenthesis onto the top of stack.

  2. push the string between two left parenthesis onto the top of the stack given that second left parenthesis does exist then goto step 3 else push the string that is in between a left and right parenthesis onto the top of the stack and goto step4.

  3. push the left parenthesis after the string(string between two left parenthesis) onto the top of the stack. Repeat steps 1 to 3 until you encounter a right parenthesis.

  4. Once you encountered a right parenthesis, remove the top two elements that is the string(string between two left parenthesis) or if applicable the string(string between the left and immediate right parenthesis) and the left parenthesis from the stack and adjust the top index and string index. Now you have the content 1.

  5. Repeat the step 4 until you have got all the contents.

关于java - 遍历嵌套的括号内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15528347/

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