有人能建议最好的解决这个编码难题的方法吗? 我使用了一堆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>
答案 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。