美文网首页
全排列算法

全排列算法

作者: 光影墨辰 | 来源:发表于2017-07-15 17:26 被阅读0次

问题:

       输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

分析如下:

           全排列算法的本质思想为将第i个元素和后面的每个元素交换位置,迭代进行下去,并去掉重复的,即可得到结果。

代码如下:

publicclassSolution {

publicArrayList Permutation(String str)

{

StringBuilder tx=newStringBuilder();

for(inti =0;i

{

chart1 = str.charAt(i);

if(t1>='a'&&t1<='z'||t1>='A'&&t1<='Z')

{

tx.append(t1);

}

}

charaim[] = tx.toString().toCharArray();

HashSet mySet =newHashSet();

if(aim.length==0)

returnnewArrayList();

deal(aim,0,mySet);

ArrayList list =newArrayList<>(mySet);

Collections.sort(list);

returnlist;

}

publicstaticvoiddeal(char[] aim,intindex,HashSet set)

{

if(index > aim.length)

return;

if(index == aim.length)

{

set.add(newString(aim));

}

for(inti =index;i

{

swap(aim, index, i);

deal(aim, index+1,set);

swap(aim, index, i);

}

}

publicstaticvoidswap(char[] aim,inti,intj)

{

chart = aim[i];

aim[i] =aim[j];

aim[j] = t;

}

}

结果如下:

输入:abc

输出:[abc, acb, bac, bca, cab, cba]

相关文章

  • 46. Permutations

    算法 1: 递归数组 的全排列,等价于全排列与可能的取值组合得到。 算法 2: 计算一个排列 按字典升序排列的紧...

  • 全排列与字典序

    全排列 递归实现全排列; 首先来说递归算法实现全排列: 例如,对于{1,2,3,4}的例子进行全排列,其可以分解...

  • 全排列算法

    参考资料 先上代码,实现非常简洁 输出 主要思路 在此树中,每一个从树根到叶子节点的路径,就对应了集合A的一个排列...

  • 全排列算法

    4个数的全排列 结果 任务分配问题

  • 全排列算法

    问题: 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,...

  • 全排列算法

    题目:给定元素a,b,a,b,c,c,d,求解出所有的排列。思路:首先这道题的算法是一个比较经典的算法,它并不是使...

  • 全排列算法

    代码实现 参考资料 全排列算法 - bilibili.com

  • 全排列算法

    问题描述: 对于一个给定的序列 a = [a1, a2, a3, … , an],请设计一个算法,用于输出这个序列...

  • 全排列算法

    全排列的定义见全排列.这里我们详细讲一下交换法和字典序法 交换法 举个简单的例子,假设我们要对1234进行全排列1...

  • 全排列算法

    1、问题描述:给定一个字符串,输出该字符串所有排列的可能。如输入“abc”,输出“abc,acb,bca,bac,...

网友评论

      本文标题:全排列算法

      本文链接:https://www.haomeiwen.com/subject/pghzhxtx.html