例如:{[]()} {[]}{()}都是匹配的。
{[[])}是不匹配的。
主要的思路就是用栈操作,当输入{,[,(,时入栈,输入,),],}时出栈,最后栈为空,表示匹配,栈不为空,表示不匹配。
代码如下:
- bool StackDemo(string str){
- Stack stack=new Stack();//实例化栈
- for(int i=0;i<=str.Length-1;i++){//循环判断,入栈
- if(str[i]=='{'||str[i]=='['||str[i]=='('){
- stack.Push(str[i]);
- }
- if(str[i]=='}'||str[i]==']'||str[i]==')){//出栈
- stack.Pop();
- }
- }
- if(stack.Count==0){//栈为空
- Console.WriteLine("匹配");
- return true;
- }else{
- foreach(Stack a in stack){//栈不为空
- Console.WriteLine("不匹配:"+a);
- return false;
- }
- }
- }
Main函数部分:
- public static void Main (string[] args)
- {
- string str="{{()}[()]}";
- StackDemo(str);
- }
大家有更好的方法,麻烦也请告诉我。