参考答案:D.
问题:有一个数组里面存放了很多的字符,需要判断这一串字符里面的括号是否匹配。
解:
new一个栈叫stack
存放字符的数组叫 ch
boolean flag 是否是匹配的标示位
思路如下:
①for循环需要判断的一堆字符
②依次每个字符判断是否为左括号,如果是,则入栈。
③如果是右括号,先判断stack是否为空,如果为空,则说明没有和他匹配的左括号。程序直接return结束算法。
如果stack不为空(说明有和他匹配的左括号),则将stack出栈。
④for循环完毕,最后看stack是否为空。如果为空则说明左右括号都是成对出现,如果不为空则说明不匹配。
for(int i=0;i<ch.length;i++){
if(ch[i] == '(' ){
stack.push(ch[i]);
}
if(ch[i] == ')'){
if(stack.isEmpty()){
flag = false;
return ;
}else{
stack.pop();
}
}
}
if(stack.isEmpty()){
flag = true;
}
比之前听的课更好懂