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);
}
}
答案 0 :(得分:6)
你是正确的,因为总复杂性是嵌套复杂性的产物,并且置换函数被称为 n 次,其中 n 是字符串的长度,循环也被称为 n 次,导致循环的 n ^ 2 调用。但是,您还必须查看循环内部代码的复杂性,尤其是replaceFirst
和insert
,决定它们的运行时是否依赖于字符串的长度,并且也与它相乘。因为我怀疑这是一个家庭作业问题,所以我把它留给你。