字符排序 java HashSet去重与遍历的三种方法

来源:互联网 发布:金牌淘宝客服 编辑:程序博客网 时间:2024/06/06 19:35

字符排序

算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。

package java历年真题;import java.io.*;import java.util.Iterator;import java.util.Scanner;import java.util.HashSet;public class 字符排序_1 {static char[]c;static boolean vis[];static HashSet<String>set = new HashSet<String>();static void dfs(char[]c,String s,int d){if(d == c.length){set.add(String.valueOf(c));return;}for(int i=0;i<c.length;i++){if(!vis[i]){vis[i] = true;c[d++] = s.charAt(i);dfs(c,s,d);d--;vis[i] = false;}}}public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);String s = sc.next();c = new char[s.length()];vis = new boolean[s.length()];for(int i=0;i<vis.length;i++){vis[i] = false;}dfs(c,s,0);//HashSet遍历的方法://一、(迭代器)//for(Iterator it=set.iterator();it.hasNext();)//  {//   System.out.println(it.next());//  }//二、//Iterator<String>i = set.iterator();//while(i.hasNext())//System.out.println(i.next());//       三、for(String str:set)System.out.println(str);}}


原创粉丝点击