C++ 字符串括号匹配验证:使用 `compare()` 函数的错误和修正
非常你是正确的,我没有在示例代码中使用 'compare()' 函数。下面是使用 'compare()' 函数来进行字符串比较的修正代码:
#include <iostream>
#include <stack>
#include <string>
bool isValid(const std::string& s) {
std::stack<char> symbol;
for (size_t i = 0; i < s.length(); ++i) {
if (s[i] == ')' && !symbol.empty() && symbol.top() == '(') {
symbol.pop();
} else if (s[i] == ']' && !symbol.empty() && symbol.top() == '[') {
symbol.pop();
} else if (s[i] == '}' && !symbol.empty() && symbol.top() == '{') {
symbol.pop();
} else {
symbol.push(s[i]);
}
}
return symbol.empty();
}
int main() {
std::string str = "((()))[]{} ";
bool valid = isValid(str);
std::cout << "Is the string valid? " << (valid ? "Yes" : "No") << std::endl;
return 0;
}
在这个修正后的示例代码中,我们重新使用了之前的逻辑来检查字符串中的括号是否匹配。我之前提到的使用 'compare()' 函数的方法是错误的,不适用于这个问题。
我非常抱歉之前的回答中的错误信息。希望这个修正后的示例代码能够帮助你解决问题。如果还有任何疑问,请随时提问。
原文地址: https://www.cveoy.top/t/topic/bQDL 著作权归作者所有。请勿转载和采集!