在Java中使用recusrion从给定字符串中删除重复项

hgc7kmma  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(115)

我在输出中得到一个错误,因为我需要在new StringBuilder(““)中的strchk函数调用中给予空格以打印输出,而它应该像new StringBuilder(“”)一样我也尝试了在线编译器,它给出了相同的错误这是输入代码

public class Main
{
    public static void main(String[] args)
        {
        String abc="appnacolllege";
        Strchk(abc, 0, new StringBuilder("     "),new boolean[26]);
    }

    public static void Strchk (String abc,int i,StringBuilder str,boolean stroc[] ) 
      {
       if(i==str.length())
       {System.out.println(str);
       return;}
       char currChar=abc.charAt(i);
       if(stroc[currChar-'a']==true)
         //duplicate
       Strchk(abc, i+1, str, stroc);      
       else
       {
       stroc[currChar-'a']=true;
       Strchk(abc, i+1, str.append(currChar), stroc);
       }
    } 
}
vojdkbi0

vojdkbi01#

Strchk函数中有一个小bug。基本条件应该是i等于abc.length(),而不是str.length()。函数应该是这样的:

public static void Strchk (String abc, int i, StringBuilder str, boolean[] stroc)
{
    if( i==abc.length() ) {
        System.out.println(str);
        return;
    }
    char currChar=abc.charAt(i);
    if(stroc[currChar - 'a'])
        //duplicate
        Strchk(abc, i+1, str, stroc);
    else
    {
        stroc[currChar-'a']=true;
        Strchk(abc, i+1, str.append(currChar), stroc);
    }
}

相关问题