1. 程式人生 > >C#面試題:判斷括號,是否匹配

C#面試題:判斷括號,是否匹配

例如:{[]()}    {[]}{()}都是匹配的。

            {[[])}是不匹配的。

主要的思路就是用棧操作,當輸入{,[,(,時入棧,輸入,),],}時出棧,最後棧為空,表示匹配,棧不為空,表示不匹配。

程式碼如下:

  1. bool StackDemo(string str){
  2.     Stack stack=new Stack();//例項化棧
  3.     for(int i=0;i<=str.Length-1;i++){//迴圈判斷,入棧
  4.         if(str[i]=='{'||str[i]=='['||str[i]=='('){
  5.             stack.Push(str[i]);
  6.         }
  7.         if(str[i]=='}'||str[i]==']'||str[i]==')){//出棧
  8.             stack.Pop();
  9.         }
  10.     }
  11.     if(stack.Count==0){//棧為空
  12.         Console.WriteLine("匹配");
  13.         return true;
  14.     }else{
  15.         foreach(Stack a in stack){//棧不為空
  16.             Console.WriteLine("不匹配:"+a);
  17.             return false;
  18.         }
  19.     }
  20. }

Main函式部分:

  1. public static void Main (string[] args)
  2. {
  3.          string str="{{()}[()]}";
  4.          StackDemo(str);
  5. }

大家有更好的方法,麻煩也請告訴我。