Valid Parentheses(用栈实现括号匹配)

    xiaoxiao2021-03-25  83

    问题描述: 输入一行括号 只包括’(’ ‘)’ ‘{’ ‘}’ ‘[’ ‘]’ 如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No。

    #include <iostream> #include <stack> using namespace std; char change(char i) { if(i == ')') return '('; if(i == '}') return '{'; if(i == ']') return '['; return '0'; } int main() { stack<char> s; char str[100] = {0},t; int i; cin >> str; for(i=0; str[i] != 0; i++) { switch(str[i]) { case '(': case '[': case '{': s.push(str[i]); break; case ')': case ']': case '}': { if(s.empty()) { cout << "no"; return 0; } else { t = change(str[i]); if(s.top() == t) { s.pop(); break; } else { cout << "no"; return 0; } } } } } if(s.empty()) { cout << "yes"; return 0; } else { cout << "no"; return 0; } return 0; }

    上面是大一刚学stack时写的代码 做LeetCode又遇到了这个题,把之前的代码改的简洁了一些,思路没什么变化

    bool isValid(string s) { stack<char> parentheses; for (int i = 0; i < s.size(); i++) { if (s[i] == '(' || s[i] == '[' || s[i] == '{') parentheses.push(s[i]); else { if(parentheses.empty()) return false; if(s[i] == ')' && parentheses.top() != '(') return false; if(s[i] == ']' && parentheses.top() != '[') return false; if(s[i] == '}' && parentheses.top() != '{') return false; parentheses.pop(); } } return parentheses.empty(); }
    转载请注明原文地址: https://ju.6miu.com/read-34937.html

    最新回复(0)