尝试使用 STL

问题描述

问题:- 给定一个仅包含字符 '(',')','{','}','[' 和 ']' 的字符串 s,确定输入字符串是否有效。

输入字符串在以下情况下有效: 1.开括号必须用同类型的括号封闭。 2.左括号必须以正确的顺序关闭。

我的解决方案:- 我是 STL 的新手并试图解决这个问题,我使用了地图和字符向量。 (){}[]()]]{} 等正常条件的输出结果是正确的。但是,像 {[]} 这样的大案子并不是真的,因为我无法为这些类型的案子编造我的逻辑。这是我的一段代码:-

#include<algorithm>
#include<string>
#include<bits/stdc++.h>
using namespace std;

void check(vector<char> &v){
    
    //assigning unique keys the numers
    map<char,int> strin;
    strin['('] =  1;
    strin[')'] = -1;
    strin['['] =  2;
    strin[']'] = -2;
    strin['{'] =  3;
    strin['}'] = -3;
    int strsize = v.size();
    int sum = 0;
    int flag = 1;
    int k=0;
    
    for(int i=0;i<v.size();++i){
        
        if(strin[v[i+1]] == -strin[v[i]]){
            sum = sum + 1;
        }
        else if(strin[v[i+2]]== -strin[v[i+1]]){
            sum = sum+1;
            
        }
        }
       
    cout<<sum<<endl;
    if(sum==strsize){
        cout<<"true";
    }
    else{
        cout<<"false";
    }
    
}

int main(){
    string str;
    cin>>str;
    
    vector<char> v(str.begin(),str.end()); //splitting string into a vector of Char
    
    check(v);
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...