華為上機練習題--括號匹配檢測
題目:
輸入一串字串。當中有普通的字元與括號組成(包含‘(’、‘)’、‘[’,']'),要求驗證括號是否匹配。假設匹配則輸出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;
}
}