本篇内容介绍了“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) {
stack 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();
}
}; 方法二:
class Solution {
public:
bool isValid(string s) {
int n = s.size();
if (n % 2 == 1) {
return false;
}
unordered_map pairs = {
{")", "("},
{"]", "["},
{"}", "{"}
};
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++如何实现验证括号”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
标题名称:C++如何实现验证括号
网站网址:http://www.jxjierui.cn/article/geooid.html


咨询
建站咨询
