剑指offer(27)字符串的排列

import java.util.ArrayList;
import java.util.Collections;
public class Solution {
    public ArrayList<String> Permutation(String str) {
       ArrayList<String> result = new ArrayList<String>();
        if(str.length()!= 0 && str.length() > 0){
            Helper(str.toCharArray(),0,result);
            Collections.sort(result);//将所有排列组合的可能按照字典序排列出来
        }
        return result;
    }
    public void Helper(char[] ch,int i ,ArrayList list){
        if(i == ch.length-1){
            String val = String.valueOf(ch);
            if(!list.contains(val)){
                list.add(val);//去重,将所有的排列放到list中
            }
        }else{
                for(int j = i;j < ch.length;j++){//
                    swap(ch,i,j);//固定第一位
                    Helper(ch,i+1,list);//将除了定位过的元素进行排列
                    swap(ch,i,j);//复原,回溯,重新选择第一位
                }
            }
        }
        public void swap(char[] ch,int i ,int j){//交换方法
            char c = ch[i];
            ch[i] = ch[j];
            ch[j] = c;
        }
    }
 

全部评论

相关推荐

昨天 15:12
门头沟学院 Java
别人在上班,我就在工位上看看视频啥的,这正常吗?
程序员小白条:实习就是摸鱼,只是公司指标,把你进来了,可能那时候客户很多,但等你进来的时候,已经是淡季了,根本没多少需求,或者说根本不适合实习生去完成,因此你就每天干坐着就行,可能1,2个月都没需求
实习生的蛐蛐区
点赞 评论 收藏
分享
05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
码农索隆:有点耳熟,你们是我教过最差的一届
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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