知的カップの第三問題ーー括弧のマッチング


タイトル記述:入力した文字列は()[]{}からなり、入力した括弧が合っているかどうかを判定します.入力説明:文字列出力記述: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;
}
データ構造を勉強すると基本的に安定します.スタックの最初の応用です.