c++98,输入() 输出YES,输入(() 输出NO
时间: 2023-08-24 10:07:20 浏览: 115
C++ 输入输出
和c++11的解法类似,这里同样可以通过栈来解决这个问题。和上一个问题不同的是,这里需要手动实现栈,因为c++98的STL库中没有stack类。
以下是示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
class Stack {
public:
Stack() {
top = -1;
}
void push(char c) {
top++;
data[top] = c;
}
void pop() {
top--;
}
char getTop() {
return data[top];
}
bool empty() {
return top == -1;
}
private:
char data[1000];
int top;
};
bool isMatch(char left, char right) {
if (left == '(' && right == ')') return true;
return false;
}
bool isValid(string s) {
int leftCount = 0, rightCount = 0;
Stack st;
for (int i = 0; i < s.length(); i++) {
char c = s[i];
if (c == '(') {
st.push(c);
leftCount++;
} else if (c == ')') {
if (st.empty() || !isMatch(st.getTop(), 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。
阅读全文