Skip to content

Instantly share code, notes, and snippets.

@itsjohncs
Created November 19, 2012 23:40
Show Gist options
  • Save itsjohncs/4114918 to your computer and use it in GitHub Desktop.
Save itsjohncs/4114918 to your computer and use it in GitHub Desktop.
Lab 8, Exercise 2 Possible Solution
#include <iostream>
#include <vector>
using namespace std;
bool isStartingBrace(char v) {
string braces = "[{(";
return braces.find(v) != -1;
}
bool isEndingBrace(char v) {
string braces = "]})";
return braces.find(v) != -1;
}
char oppositeBrace(char v) {
if (v == '}') {
return '{';
} else if (v == ']') {
return '[';
} else if (v == ')') {
return '(';
}
cout << "AHHHHHHH!!!!" << endl;
}
bool bracesMatching(string v) {
vector<char> stack;
for (int i = 0; i < v.size(); ++i) {
if (isStartingBrace(v.at(i))) {
stack.push_back(v.at(i));
}
else if (isEndingBrace(v.at(i))) {
if (stack.size() == 0) {
return false;
}
if (stack.at(stack.size() - 1) != oppositeBrace(v.at(i))) {
return false;
}
stack.pop_back();
}
}
return stack.size() == 0;
}
int main() {
string str;
cout << "Enter a string: ";
cin >> str;
if (bracesMatching(str)) {
cout << "matching" << endl;
} else {
cout << "not matching" << endl;
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment