無重複字符串的排列組合

題目描述:
無重複字符串的排列組合。編寫一種方法,計算某字符串的所有排列組合,字符串每個字符均不相同

class Solution {
    public String[] permutation(String S) {
        List<String> res=new ArrayList<>();
        func(S.toCharArray(),0,S.length(),res);
        int len=res.size();
        String[] arr=new String[len];
        for(int i=0;i<len;i++){
            arr[i]=res.get(i);
        }
        return arr;
    }
    public void func(char[] arr,int start,int len,List<String> list){
        if(start==len){
            list.add(new String(arr));
            return;
        }
        for(int i=start;i<len;i++){
            swap(arr,i,start);
            func(arr,start+1,len,list);
            swap(arr,i,start);
        }
    }
    public void swap(char[] arr,int x,int y){
        char tmp=arr[x];
        arr[x]=arr[y];
        arr[y]=tmp;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章