c++输入() 输出YES,输入(() 输出NO
时间: 2023-08-10 18:02:50 浏览: 136
同样可以通过栈来解决这个问题。和上一个问题不同的是,这里需要判断左括号和右括号的数量是否相等,如果不相等则括号不匹配,返回NO。
以下是示例代码:
```c++
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool isMatch(char left, char right) {
if (left == '(' && right == ')') return true;
return false;
}
bool isValid(string s) {
int leftCount = 0, rightCount = 0;
stack<char> st;
for (char c : s) {
if (c == '(') {
st.push(c);
leftCount++;
} else if (c == ')') {
if (st.empty() || !isMatch(st.top(), c)) {
return false;
}
st.pop();
rightCount++;
}
}
return st.empty() && leftCount == rightCount;
}
int main() {
string s1 = "()";
if (isValid(s1)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
string s2 = "(()";
if (isValid(s2)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
```
输出结果为 YES 和 NO。
阅读全文