int ra(char x) { if (x == '('||x==')') return 1; if (x == '[' || x == ']') return 2; if (x == '{' || x == '}') return 3; return -1; } bool checkBracket(string src) { stack tmp; for (int i = 0; i < src.length(); i++) { if ((src[i] == '(') && (src[i + 1] == ')')) return false; if ((src[i] == '[') && (src[i + 1] == ']')) return false; if ((src[i] == '{') && (src[i + 1] == '}')) return false; if (tmp.empty()) { if (src[i] == 41 || src[i] == 93 || src[i] == 125) { return false; } else if (src[i] == 40 || src[i] == 91 || src[i] == 123) { tmp.push(src[i]); } } else { if (src[i] == 41 || src[i] == 93 || src[i] == 125) { if (ra(tmp.top()) == ra(src[i])) { tmp.pop(); continue; } else { return false; } } else if (src[i] == 40 || src[i] == 91 || src[i] == 123) { if (src[i] > tmp.top()) { return false; } else { tmp.push(src[i]); } } } } if (!tmp.empty()) { return false; } return true;