我是初学者,所以我有这个愚蠢的问题。假设我有一个bracket.txt文件,它有一个像这样的字符串“(()))))(()()()()()()()()()()()”我想要写一个脚本,检查所有括号是否正确关闭,并且没有太多(打印“一切正确”或类似的东西)。例如,在“))))(((((”每个括号有一个匹配的,但他们没有正确关闭。我知道如何找到并计算他们但检查部分真的很烦我,我会非常感谢你的帮助!
答案 0 :(得分:3)
继续删除()
,直到你不能再继续。如果剩下任何内容,则输入无效。
while [[ $string = *'()'* ]] ; do
string=${string//()/}
done
if [[ $string ]] ; then
echo Invalid
else
echo Valid
fi
答案 1 :(得分:1)
嗯,这应该是逻辑。
希望有所帮助
答案 2 :(得分:-1)
我想你可以试试下面的代码:
String input = "()))((";
int count1=0;
int count2=0;
boolean temp = false;
char[] a = new char[input.length()];
for(int x=0;x<input.length();x++){
a[x] = input.charAt(x);
if(a[x]=='('){
count1++;
}
else if(a[x]==')'){
count2++;
}
}
if(a[0]==')'){
temp = true;
}
else if(a[0]=='(' && count1==count2){
int t1=1;
int t2=0;
for(int x=1;x < input.length();x++){
if(a[x]=='('){
t1++;
}
if(a[x]==')'){
t2++;
if(t2>t1){
temp = true;
break;
}
}
}
}
else{
temp = true;
}
if(!temp){
System.out.println("correct");
}
else{
System.out.println("incorrect");
}