私はこのコードの複雑さを分析しようとしている。 私は、forループが再帰関数の中でao(n)を取るので、そのo(n^2) を述語としました。わからない 。あなたは総複雑性は、ネストされた複雑さの積であり、並び替える機能がNは、文字列の長さであり、そしてループが呼び出されN回呼び出されることに正しいどのような複雑な関数は複雑なループ内の再帰関数
public class main
{
static Set<String> setString = new HashSet<>();
public static void main(String[] args)
{
// TODO Auto-generated method stub
main m = new main();
m.permute("sanad", 0);
for(String s : setString)
{
System.out.println(s);
}
}
public void permute(String str , int i)
{
if (i>=str.length())
{
return;
}
for(int j = 0 ; j < str.length();j++)
{
StringBuilder b = new StringBuilder(str. replaceFirst(String.valueOf(str.charAt(i)), ""));
b.insert(j,str.charAt(i));
setString.add(b.toString());
}
permute(str, ++i);
}
}
文字列のすべての順列をハッシュセットに入れようとしていますか? –
文字列に一意の文字のみが含まれることが保証されていますか?そうでない場合は、プログラムが正しくありません。 – RealSkeptic
@RealSkeptic一意の文字列です。これはセットを使用しているためです。 – user3512497