【发布时间】:2020-06-25 08:06:47
【问题描述】:
给定一个仅包含“}”和“{”的字符串表达式。表达可能不平衡。您需要找到使表达式平衡所需的最小括号反转数。 如果给定的表达式不能平衡,则返回 -1。
下面的代码在 (input= }{) 上有错误的输出。我的代码返回 -1。但输出应该是 2。我无法理解包含哪些测试用例。请给出一些建议或更改以产生所需的输出
import java.io.*;
public class Solution {
public static int countBracketReversals(String input){
Stack<Character> stk=new Stack<>();
char c1; char c2;
int c=0;
int l=input.length();
for(int i=0;i<l;i++)
{
if(input.charAt(i)=='{')
{
stk.push(input.charAt(i));
}
if(input.charAt(i)=='}')
{
if(stk.isEmpty())
{
stk.push(input.charAt(i));
}
if(stk.peek()=='{')
{
stk.pop();
}
if(stk.peek()=='}')
{
stk.push(input.charAt(i));
}
}
}
int a=stk.size();
if(a%2==0)
{
while(!stk.isEmpty())
{
c1= stk.pop();
c2= stk.pop();
if(c1==c2)
{
c=c+1;
}
if(c1=='}' && c2=='{')
{
c=c+2;
}
}
}
else
{
c=-1;
}
return c;
}
}
【问题讨论】: