本题可通过C++中的链栈来解决:
class Solution {
public:
bool isValid(string s) {
stack<char> linkstack;
int length = s.size();
if (length == 0)
return true;
if (length % 2)
return false;
linkstack.push(s[0]);
for (int i = 1; i < length; i++) {
if (linkstack.empty())
linkstack.push(s[i]);
else if (s[i] - linkstack.top() == 1 || s[i] - linkstack.top() == 2)
linkstack.pop();
else
linkstack.push(s[i]);
}
return linkstack.empty();
}
};