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

xiaoxiao2021-02-28  77

字符排序

算法是这样的,如果给定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 stub Scanner 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); } }

转载请注明原文地址: https://www.6miu.com/read-75734.html

最新回复(0)