题目来源:https://www.nowcoder.com/question/next
思路
暴力枚举位置,然后判断是否括号是否合理,若合理,加入到set集合里(去重)。
反思
没能理解清题意,菜。
代码
#include<set>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
bool check(string str)
{
int len=str.size(),num=0;
for(int i=0;i<len;i++)
{
num+=str[i]=='('?1:-1;
if(num<0)
return false;
}
return true;
}
int main()
{
string s;
set<string> sset;
cin>>s;
int len=s.size();
for(int i=0; i<len; i++)
{
string t=s.substr(0,i)+s.substr(i+1);
for(int j=0;j<len-1;j++)
{
string r=t.substr(0,j)+s[i]+t.substr(j);
if(check(r))
sset.insert(r);
}
}
//最后的结果要除去输入数据的字符串本身。。
cout<<(int)sset.size()-1<<endl;
}