题解 | #字符串的排列#

字符串的排列

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 ;
    }
}

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

分享一个菜鸟的成长记录

全部评论

相关推荐

点赞 评论 收藏
分享
程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务