字符串的全排列问题的解决方法
来源:互联网 发布:层次方框图软件 编辑:程序博客网 时间:2024/06/03 09:24
package exampletest;import java.util.ArrayList;import java.util.Scanner;public class Main01 { public static void main(String[] args) { String str = "ABCD"; ArrayList<String> list = new ArrayList<>(); Permutation(list,str.toCharArray(),0); System.out.println(list); } /** * 字符串全排列问题:ABC * 如果能生成n-1个元素的全排列,则能生成n个元素的全排列。 * 1)固定第一个字符A,求后面两个字符BC的排列; * 2)当两个字符BC排列好后,把第一个字符A和B交换,得到BAC,接着固定第一个字符B,求后面AC的排列。 * 3)现在把C放在第一个位置,由于前面已经交换了AB,为了保证这次C仍是和原先处在第一个位置的A交换, * 在交换C之前,先要把B和A交换回来。在交换B和A之后,再拿C和处于第一位置的A进行交换,得到CBA。 * 再次固定第一个字符C,求后面两个字符B、A的排列。 * @param list * @param ch * @param n */ public static void Permutation(ArrayList<String> list ,char[] ch ,int n){ if (n == ch.length){ //交换一次完成记录 list.add(new String(ch)); } for (int i = n; i < ch.length; i++) { //交换字符串长度的次数 swap(ch,i,n);//交换后面的 步骤2) Permutation(list,ch,n+1); swap(ch,i,n);//交换前面的 步骤3) } } /** * 交换字符 * @param ch * @param i * @param j */ public static void swap(char[] ch,int i,int j){ if (i != j){ char c = ch[i]; ch[i] = ch[j]; ch[j] = c; } }}
阅读全文
0 0
- 字符串的全排列问题的解决方法
- 字符串的全排列问题
- 字符串的全排列问题
- 字符串的全排列问题
- 字符串的全排列问题
- 字符串的全排列问题
- 字符串、数组的全排列问题
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 分类器评价指标——ROC曲线和AUC值
- 《PHP MySQL和WEB开发》笔记第十一章
- JAVA开发中字节转换问题(byte数组byte数组、合并、转换16进制)
- Eclipse:An internal error occurred during: "Build Project". GC overhead limit exceeded
- Couldn't reserve space for cygwin's heap, Win32 error 0
- 字符串的全排列问题的解决方法
- Ubuntu16.04环境下安装CUDA、cudnn、Caffe、Tensorflow、pytorch
- socket、tcp、udp、http 的认识及区别
- linux Samba共享,图形界面配置
- 洛谷P3606 [USACO17JAN]Building a Tall Barn建谷仓
- 9.27数据结构练习赛
- Codevs 2185 LCIS
- Android 恢复出厂设置(recovery)
- CC2541开发板(TI官方)类型介绍