首页 > 代码库 > 华为上机练习题--括号匹配检测
华为上机练习题--括号匹配检测
题目:
输入一串字符串,其中有普通的字符与括号组成(包括‘(’、‘)’、‘[’,‘]‘),要求验证括号是否匹配,如果匹配则输出0、否则输出1.
Smple input:dfa(sdf)df[dfds(dfd)] Smple outPut:0
分析: 类似于括号字符匹配这类的问题, 我们可以模拟栈的操作来进行验证, 这样问题就简单了, 就是栈的操作
代码如下:
package com.wenj.test;
import java.util.ArrayList;
import java.util.List;
public class TestMatchKuohao {
public static void main(String args[]){
String strIn = "dfa(sdf)df[dfds(dfd)]";
TestMatchKuohao tm = new TestMatchKuohao();
System.out.println(tm.matchKuohao(strIn));
}
public int matchKuohao(String strIn){
if("" == strIn || null == strIn){//空串默认不配
return 1;
}
String strTemp = strIn;
char[] strC = strTemp.toCharArray();
List<Character> cL = new ArrayList<Character>();
for(int i=0; i<strC.length; i++){
char temp = strC[i];
switch(temp){
case ‘(‘:
cL.add(temp);
break;
case ‘[‘:
cL.add(temp);
break;
case ‘)‘: //遇到右括号则出栈
if(cL.size() == 0){//如果栈空则说明括号匹配不上,直接返回1
return 1;
}else{
char tempC = cL.get(cL.size()-1);
if(‘(‘ == tempC){
cL.remove(cL.size()-1); //做出栈操作
}else{
return 1;
}
}
break;
case ‘]‘:
if(cL.size() == 0){
return 1;
}else{
char tempC = cL.get(cL.size()-1);
if(‘[‘ == tempC){
cL.remove(cL.size()-1);
}else{
return 1;
}
}
break;
default:
break;
}
}
if(cL.size() == 0)
return 0;
else
return 1;
}
}