3、给定一个字符串,字符串只包含两种字符:左括号“(”和右括号”)”。请判断这些括号是否能匹配。如果能则输出Yes,不能则输出No。 给出C++代码
时间: 2024-10-19 17:13:18 浏览: 23
这是一个经典的栈应用问题,可以使用C++来解决。你可以创建一个函数,输入一个字符串,然后遍历这个字符串,对于每个遇到的左括号"(",将其压入到一个栈中。当遇到右括号")"时,检查栈顶元素是否是对应的左括号,如果是,则弹出栈顶元素;如果不是或者栈已空,说明无法匹配,返回"No"。遍历结束后,如果栈为空,表示所有括号都已配对,返回"Yes"。
以下是C++代码示例:
```cpp
#include <iostream>
#include <stack>
using namespace std;
bool isValid(string s) {
stack<char> st;
for (char c : s) {
if (c == '(') {
st.push(c);
} else if (c == ')') {
// 如果栈不为空且栈顶是左括号,弹出并继续
if (!st.empty() && st.top() == '(') {
st.pop();
} else {
return false; // 栈为空或者栈顶不是左括号,无法匹配
}
} else {
// 非括号字符直接忽略
}
}
// 如果所有的左括号都有相应的右括号,那么栈应该为空
return st.empty();
}
int main() {
string input;
cout << "Enter a string of parentheses to check: ";
cin >> input;
if (isValid(input)) {
cout << "Yes";
} else {
cout << "No";
}
return 0;
}
```
阅读全文