传智杯第三题----括号匹配

题目描述:
输入的字符串由()[] {}组成,判断输入的括号是否匹配。
输入描述:
一个字符串
输出描述:
yes或no
输入样例:
([[[]]])
输出样例:
yes

#include 
#include 
#include 
 using namespace std;
bool func(string &ss)
{
 	stack<char> s;
 	for (int i = 0; i < ss.size();i++)
 	{
  		switch (ss[i])
 		 {
 			 case '(':s.push(ss[i]); break;
 			 case '[':s.push(ss[i]); break;
  			 case '{':s.push(ss[i]); break;
  			 case ')':
   				if (s.top() != '(')
    				return false;
   				else
    				s.pop(); break;
  			 case ']':
   				if (s.top() != '[')
    				return false;
   				else
   					s.pop(); break;
 			 case '}':
   				if (s.top() != '{')
    				return false;
  				else
    				s.pop(); break;
 
  			default:
   				break;
  		 }
 	}
 	return s.empty();
}
 
int main()
{
	string s;
	cin>>s;
 	if (func(s))
 	 cout << "yes"<<endl;
 	else
  	cout << "no"<<endl;
 	return 0;
}

学过数据结构就基本稳了,栈的第一个应用。

你可能感兴趣的:(传智杯,数据结构,算法题解)