本篇内容介绍了“C++如何实现验证括号”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联公司专注于网站建设|成都网站改版|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖户外休闲椅等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身开发品质网站。
Given a string containing just the characters "(", ")", "{", "}", "[" and "]", determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1:
Input: "()"
Output: true
Example 2:
Input: "()[]{}"
Output: true
Example 3:
Input: "(]"
Output: false
Example 4:
Input: "([)]"
Output: false
Example 5:
Input: "{[]}"
Output: true
这道题让我们验证输入的字符串是否为括号字符串,包括大括号,中括号和小括号。这里需要用一个栈,开始遍历输入字符串,如果当前字符为左半边括号时,则将其压入栈中,如果遇到右半边括号时,若此时栈为空,则直接返回 false,如不为空,则取出栈顶元素,若为对应的左半边括号,则继续循环,反之返回 false,代码如下:
方法一:
class Solution { public: bool isValid(string s) { stackparentheses; 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(); } };
方法二:
class Solution { public: bool isValid(string s) { int n = s.size(); if (n % 2 == 1) { return false; } unordered_mappairs = { {")", "("}, {"]", "["}, {"}", "{"} }; stack stk; for (char ch: s) { if (pairs.count(ch)) { if (stk.empty() || stk.top() != pairs[ch]) { return false; } stk.pop(); } else { stk.push(ch); } } return stk.empty(); } };
“C++如何实现验证括号”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!