zoukankan      html  css  js  c++  java
  • 剑指offer_27:字符串的排列

    输入一个字符串,打印出该字符串中字符的所有排列。
    你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。

    示例:
    输入:s = "abc"
    输出:["abc","acb","bac","bca","cab","cba"]

    限制:
    1 <= s 的长度 <= 8

    1、回溯

    class Solution {
        char[] charArray;
        List<String> res=new ArrayList<>();
        public String[] permutation(String s) {
            int len=s.length();
            charArray=s.toCharArray();
            Arrays.sort(charArray);
            dfs(0);
            return res.toArray(new String[res.size()]);
        }
        public void dfs(int index){
            if(index==charArray.length-1){
                res.add(String.valueOf(charArray));
                return;
            }
            HashSet<Character> set=new HashSet<>();
            for(int i=index;i<charArray.length;i++){
                if(set.contains(charArray[i])){
                    continue;
                }
                set.add(charArray[i]);
                swap(i,index);
                dfs(index+1);
                swap(i,index);
            }
        }
        public void swap(int a,int b){
            char temp=charArray[a];
            charArray[a]=charArray[b];
            charArray[b]=temp;
        }
    }
    
  • 相关阅读:
    文件管理后章
    文件管理前章
    文本处理三剑客
    匿名函数以及应用、三元表达式
    认识docker以及常用操作
    字符编码
    赋值与深浅拷贝
    Python基本运算符
    LVM配置
    Linux磁盘管理
  • 原文地址:https://www.cnblogs.com/xyz-1024/p/14309617.html
Copyright © 2011-2022 走看看