全排列,回溯,剑指offer原题

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.print(permutation(str));
    }
    public static ArrayList<String> permutation(String str){
        ArrayList<String> list = new ArrayList<String>();
        if(str == null || str.length() == 0)
            return list;
        permutationHelper(str.toCharArray(), 0, list);
        Collections.sort(list);
        return list;
    }
    public static void permutationHelper(char[] ch, int i, ArrayList<String> list){
        if(i == ch.length - 1){
            String str = String.valueOf(ch);
            if(!list.contains(str))
                list.add(str);
        }else{
            for(int j = i; j < ch.length; j ++){
                swap(ch, i, j);
                permutationHelper(ch, i + 1, list);
                swap(ch, i, j);
            }
        }
    }
    public static void swap(char[] ch, int i ,int j){
        char temp = ch[i];
        ch[i] = ch[j];
        ch[j] = temp;
    }
}
全部评论

相关推荐

Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
“校招”、“3-5年经验”
xiaolihuamao:逆向工程不是搞外挂的吗,好像现在大学生坐牢最多的就是诈骗罪和非法侵入计算机系统罪,发美金,还居家办公,就是怕被一锅端,
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务