具有不同符号的平衡括号算法

时间:2016-01-17 18:43:25

标签: java python algorithm

我们都知道常规的平衡括号算法,它出现在很多变化中,但我有另一种扭曲。

我知道如何使用或没有堆栈来回答它,我已经阅读了所有与此问题相关的线程,并在谷歌上但我没有找到任何与我的问题相符的答案。

让我们发明一种不同的数学,而不是'()','{}','[]'我们使用'**','$$','##'。现在显示一个算法来检查括号是否平衡。

例如:* ## $$ ## ***是合法的,相当于([[{}]])()或甚至([] {})。 如果它是真正的数学,它可能不是最好的不同符号意味着不同的东西,但它不是数学处理......

我尝试使用'常规'符号的解决方案并调整它以使用这个新符号但是现在我失败了。问题当然是我们无法分辨开关符号。有人可以提出解决方案吗?

这是作为求职面试中的一个问题给我的,而在此之前我用常规符号解决了这个问题。并不重要,但我被要求使用Java回答。

1 个答案:

答案 0 :(得分:2)

只要你在堆叠顶部有匹配,你就可以贪婪并弹出。

def is_valid(string):
    stack = []
    for char in string:
        if stack and char == stack[-1]:
            stack.pop()
        else:
            stack.push(char)
    return not stack