題目敘述
每筆測資有一個字串,字串中只會有小括弧和中括弧。要求輸出這個字串有沒有括號匹配問題。
範例輸入 #1
[([][])]
範例輸出 #1
Right
範例輸入 #2
[(])
範例輸出 #2
Wrong
解題思路
跑字串的For迴圈,如果是左括號的話將這個字元存放到一個Vector中,如果是右括號的話判斷目前Vector最後一個字元是否跟這個右括號匹配,如果匹配的話就將Vector最後一個資料Pop_Back,如果不匹配的話直接輸出Wrong並將迴圈Break掉。如果For迴圈跑完Vector中還有資料的話也是Wrong。
解題程式碼如下 (僅供參考):
#include <iostream>
#include <vector>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
string str;
cin >> str;
vector<char>v;
bool ok = true;
for (int i = 0; i<str.length(); i++)
{
if (str[i] == '(' || str[i] == '[')
{
v.push_back(str[i]);
}
else
{
if (str[i] == ')')
{
if (v.size() > 0 && v[int(v.size()-1)] == '(') v.pop_back();
else
{
ok = false;
cout << "Wrong\n";
break;
}
}
else
{
if (v.size() > 0 && v[int(v.size()-1)] == '[') v.pop_back();
else
{
ok = false;
cout << "Wrong\n";
break;
}
}
}
}
if (ok && v.size() != 0)
{
ok = false;
cout << "Wrong\n";
}
if (ok) cout << "Right\n";
}
留言
張貼留言