全排列,回溯,剑指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;
    }
}
全部评论

相关推荐

02-24 17:39
门头沟学院 Java
神哥不得了:神哥来啦~专业技能的话建议不要前面空那么多,八股的话建议先把高频top 50的八股多巩固几遍,千万不要看那些假高频八股。项目的话,建议换两个高质量的项目上去
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务