java字符串所有组合,字符串全组合--递归

来源:互联网 发布:小米主题 windows xp 编辑:程序博客网 时间:2024/06/05 17:26

思路:遍历字符串,将第一个字符与其余字符依次交换,然后将第二个字符与其他依次交换,直到最后一个字符

public class Test {    public static void main(String[] args) {        String str ="abcd";        String str2="aba";        String str3="aaaa";        combine(str3.toCharArray(),0,str3.length());    }    public static void combine(char[] str,int start,int end){        if (start == end){            System.out.println(str);        }else{            for(int j=start;j<end;j++){                if (str[start] == str[j] && start!=j) continue;  //不同位置的相同字符不交换,避免重复                swap(str,start,j);                combine(str,start+1,end);//递归                swap(str,start,j);  //还原字符串,为下一for循环准备            }        }    }    public static void swap(char[] str,int i,int j){        char tmp = str[i];        str[i] = str[j];        str[j] = tmp;    }}
原创粉丝点击