-
Stack(棧)是一種後進先出的數據結構,也就是LIFO(last in first out) ,最後加入棧的元素將最先被取出來,在棧的同一端進行數據的插入與取出,這一段叫做“棧頂”。通過利用這種性質可以判斷字符串中括號是否匹配。
-
使用STL的stack需要include一個頭文件
<stack>
-
c++ stl棧stack的成員函數介紹
- pop() 移除棧頂元素
- empty() 堆棧爲空則返回真
- push() 在棧頂增加元素
- size() 返回棧中元素數目
- top() 返回棧頂元素
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool valid_braces(std::string braces) {
// valid or not valid?
stack<char> char_stack;
bool ans = true;
int i;
for (auto c : braces) {
if (c == '{' || c == '(' || c == '[') {
char_stack.push(c);
} else {
if (char_stack.empty()) {
ans = false;
break;
} else if ((c == '}' && char_stack.top() == '{') || (c == ')' && char_stack.top() == '(') || (c == ']' && char_stack.top() == '[')) {
char_stack.pop();
} else {
ans = false;
break;
}
}
}
if (!char_stack.empty()) {
ans = false;
}
return ans;
}
int main(int argc, char* argv[]) {
string braces_str;
cout << "Please enter braces string:";
cin >> braces_str;
cout << valid_braces(braces_str);
return 0;
}