首页 > 小米秋招题,遇到错误,无法排解,请求各位大佬帮助
头像
牛客820301187号
编辑于 2021-06-23 15:19
+ 关注

小米秋招题,遇到错误,无法排解,请求各位大佬帮助

题目:给定一个字符串str,判断是不是整体有效的括号字符串(整体有效:即存在一种括号匹配方案,使每个括号字符均能找到对应的反向括号,且字符串中不包含非括号字符)。
链接:https://www.nowcoder.com/questionTerminal/769abd985f3849d0b9415b082f94c192
来源:牛客网

输入描述:
输入包含一行,代表str(1≤lengthstr≤105)( 1 \leq length_{str} \leq 10^5)1lengthstr105


输出描述:
输出一行,如果str是整体有效的括号字符串,请输出“YES”,否则输出“NO”。
示例1

输入

(()) 

输出

YES 
示例2

输入

()a() 

输出

NO 

说明

()a()中包含了 ‘a’,a不是括号字符  

备注:
时间复杂度O(n)O(n)On,额外空间复杂度O(1)O(1)O1
我的答案是:
#include<iostream>
#include<stack>
#include<string>
using namespace std;

string str_yes_or_no(string str) {
    stack<char> s;
    for (int i = 0; i < str.length(); i++) {
        if (str[i] =='(') {
            s.push(str[i]);
        }
        else if (str[i] == ')') {
            if(s.top() == '(') {
                s.pop();
            }
            else {
                s.push(str[i]);
            }
        }
        else {
            return "NO";
        }
    }
    if (s.empty()) {
        return "YES";
    }
    else {
        return "NO";
    }
}

int main() {
    string str;
    cin >> str;
    cout << str_yes_or_no(str) << endl;
    return 0;
}

这个通过不了,请问是哪里错误?

全部评论

(1) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

近期精华帖

热门推荐