zoukankan      html  css  js  c++  java
  • 26.字符串全排列

    输入一个字符串,按字典序打印出该字符串中字符的所有排列。

    例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba

    了解大概,深扣细节:

    对于一个字符串例如abcd;

    定第一位为a,遍历后面的组合,bc,bd,cd

    定位第一位为b,(交换a,b)遍历组合ac……

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Collections;
     
    public class Solution {
        public ArrayList<String> Permutation(String str) {
            List<String> res = new ArrayList<>();
            if (str != null && str.length() > 0) {
                PermutationHelper(str.toCharArray(), 0, res);
                Collections.sort(res);
            }
            return (ArrayList)res;
        }
     
        public void PermutationHelper(char[] cs, int i, List<String> list) {
            if (i == cs.length - 1) {
                String val = String.valueOf(cs);
                if (!list.contains(val))
                    list.add(val);
            } else {
                for (int j = i; j < cs.length; j++) {
                    swap(cs, i, j);
                    PermutationHelper(cs, i+1, list);
                    swap(cs, i, j);
                }
            }
        }
     
        public void swap(char[] cs, int i, int j) {
            char temp = cs[i];
            cs[i] = cs[j];
            cs[j] = temp;
         }
    }
  • 相关阅读:
    Pieczęć(模拟)
    【并查集】关押罪犯
    火车进栈
    独木舟上的旅行
    哈尔滨理工大学第八届程序设计团队赛K题
    [数学、递推]Everything Is Generated In Equal Probability
    [构造]triples I
    2019牛客第三场
    [DP]销售
    [哈夫曼树]猜球球
  • 原文地址:https://www.cnblogs.com/wzQingtTian/p/10664029.html
Copyright © 2011-2022 走看看