题解 | #字符串的排列#

字符串的排列

http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7

import java.util.*;
public class Solution {
    public ArrayList<String> Permutation(String str) {
       ArrayList<String> ret = new ArrayList<>() ;
        if(str == null) {
            return ret ;
        }
        HashSet<String> set = new HashSet<>() ;
        recursion(str.toCharArray() , 0 , set , new StringBuilder()) ;
        for(String s : set) {
            ret.add(s) ;
        }
        return ret ;
    }
    public void recursion(char[] arr , int now ,HashSet<String> ret , StringBuilder path) {
        if(now == arr.length) {
            ret.add(new String(path)) ;
            return ;
        }
        for(int i = now ; i < arr.length ; i ++) {
            path.append(arr[i]) ; 
            swap(arr,now , i) ;
            recursion(arr,now+1,ret,path) ;
            swap(arr,now , i) ;
            path.deleteCharAt(path.length()-1) ;
        }
    } 
    public void swap(char[] arr , int i , int j) {
        char temp = arr[i] ;
        arr[i] = arr[j] ;
        arr[j] = temp ;
    }
}

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务