全排列字符串java实现

来源:互联网 发布:金钻js防水 编辑:程序博客网 时间:2024/05/02 01:22
从控制台输入一个字符串,输出它的全排列,不能重复哦。

想了挺久的一个问题,最后用递归实现全排列,用Set去掉重复的元素。代码如下:

如有改进想法请不吝赐教~~


import java.util.HashSet;import java.util.Scanner;public class My_exe {public static void main(String[] args){Scanner scanner = new Scanner(System.in);String str=scanner.nextLine();scanner.close();HashSet<String> set = new HashSet<String>();FullPermutation(str,set);for(String sttr:set){System.out.println(sttr);}}public static void FullPermutation(String str,HashSet<String> set){boolean[] index = new boolean[str.length()];String ans="";int num = 1;FullPermutation(str,num,index,ans,set);}public static void FullPermutation(String str,int num,boolean[] index,String ans,HashSet<String> set){if(num == str.length()){for(int i = 0; i<index.length; i++){if(index[i] == false){ans = ans + str.charAt(i);//System.out.println(ans);set.add(ans);return;}}}for(int i = 0; i< index.length;i++){if(index[i] == false){num++;index[i] = true;ans = ans + str.charAt(i);FullPermutation(str,num,index,ans,set);num--;index[i]=false;ans = ans.substring(0,ans.length()-1);}}}}


0 0
原创粉丝点击