非常你是正确的,我没有在示例代码中使用 '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()' 函数的方法是错误的,不适用于这个问题。

我非常抱歉之前的回答中的错误信息。希望这个修正后的示例代码能够帮助你解决问题。如果还有任何疑问,请随时提问。

C++ 字符串括号匹配验证:使用 `compare()` 函数的错误和修正

原文地址: https://www.cveoy.top/t/topic/bQDL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录