对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。
给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。
测试样例:
"(()())",6
返回:true
测试样例:
"()a()()",7
返回:false
测试样例:
"()(()()",7
返回:false
算法思想:遇到左括号时,变量值加一,遇到右括号时变量值减一。遇到非括号的字符,即left<0时 不合法。
遍历完整个字符串后,即left==0时,该字符串合法
public class Parenthesis {
public boolean chkParenthesis(String A, int n){
if (A == null || n == 0) {
return false;
}
int left = 0;
for (int i = 0; i < A.length(); i++) {
if (A.charAt(i) == '(') {
left++;
} else if (A.charAt(i) == ')') {
left--;
} else {
return false;
}
if (left < 0) {
return false;
}
}
if (left == 0) {
return true;
}
return false;
}
}