我有以下代码
static String super_reduced_string(StringBuilder s){
for(int i=0;i<s.length()-1;i++){
if(s.charAt(i)==s.charAt(i+1)){
StringBuilder s1= s.delete(i,i+2);
//System.out.println("Reduced String is "+s1 +s1.length());
if(s1.length()==0){
System.out.println("Reduced String is"+s1 +s1.length());
return "Empty String";
}
super_reduced_string(s1);
}
}
return s.toString();
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
String result = super_reduced_string(new StringBuilder(s));
System.out.println(result);
}
当我将输入作为“aa”传递时,它返回“Empty String”作为输出但是当我传递“baab”时,它返回null作为输出。我无法理解为什么会这样。
有人可以解释一下吗?
答案 0 :(得分:0)
您可以设置删除重复的字母:
if(s.charAt(i)==s.charAt(i+1)){
StringBuilder s1= s.delete(i,i+2);
因此,当您将aa
传递给方法时,它将删除这两个字母,因为它们是相同的。如果您通过baab
,则会删除aa
,但会删除bb
,因为它们也是重复的。
修改强>
如果您的bb
没有,则需要添加return
语句:
if