有效的Parens方法 - Java

时间:2016-08-21 04:39:30

标签: java

有人能建议最好的解决这个编码难题的方法吗? 我使用了一堆if语句,并被告知只是增加了圈复杂度。解决方案是正则表达式还是数据结构(例如堆栈)?非常感谢任何反馈。

 <style name="Autocomplete" parent="Widget.AppCompat.Light.AutoCompleteTextView">
    <item name="android:background">@color/green500</item>
    <item name="colorControlNormal">@color/amber500</item>
    <item name="colorControlActivated">@color/cyan500</item>
</style> 

2 个答案:

答案 0 :(得分:2)

要简单地检查括号是否有效(成对),您真的不需要任何数据结构。只需在遇到a时递增计数器变量(并在找到它时将其递减)。如果(和)平衡,则计数器应该= 0:

static boolean check(String toCheck) {
    if (toCheck == null || toCheck.equals(""))
        return false;
    int count = 0;
    for (int i = 0; i < toCheck.length(); i++) {
        char c = toCheck.charAt(i);
        if (c == '(') {
            count++;
        } else if (c == ')') {
            if (count == 0)
                return false;
            count--;
        }
    }
    return count == 0;
}

答案 1 :(得分:1)

你只需要一个柜台。

如果input为null或空字符串,则返回false。

然后迭代字符串的字符,并在看到(时递增计数器,并在看到)时递减计数器。

如果您看到)并且计数器为零,则返回false 如果计数器最后不为零,则返回false 否则返回true。