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