import java.util.ArrayList; public class Test7 { public static void main(String[] args) { // TODO Auto-generated method stub String s="abc"; //调用排序方法 combinations(s); } //排序方法 private static void combinations(String s) { //创建一个ArrayList用来存放结果 ArrayList<String> list =new ArrayList<String>(); //将字符串拆分成单个字符存入ArrayList char[] ch = s.toCharArray(); for(char c:ch) { list.add(c+""); } //进行循环存入 int len=s.length(); //记录随着长度增长产生的字符串个数 int start=0; //用于记数 //l表示字符串长度 for(int l=2;l<=s.length();l++) { //取出l长度的所有字符串 for(int x=0;x<len;start++,x++) { for(int in=0;in<s.length();in++) { //在l-1长度的字符串末尾添加单个字符串,产生长度为l的字符串 list.add(list.get(start)+list.get(in)); } } len=len*s.length(); } //调用输出字符串方法 print(list); } //输出字符串 private static void print(ArrayList<String> list) { for(String ls:list) { //判断字符串是否含有相同元素,不含有则输出 if(!isSame(ls)) { System.out.print(ls+","); } } } private static boolean isSame(String ls) { //对于长度大于1的进行判断 if(ls.length()>1) { //依次取出该字符串前一半的元素 for(int n=0;n<ls.length()/2+1;n++) { //对取出的元素进行第一次出现和最后一次出现位置比较,相同则说明只存在一个该元素 if(ls.indexOf(ls.charAt(n))==ls.lastIndexOf(ls.charAt(n))) { continue; } return true;//否则返回True表示存在相同元素 } return false;//所有元素判断完,返回false,表示无相同元素。 } return false; } } |