zoukankan      html  css  js  c++  java
  • 字符串的排列

    题目描述

    输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

    输入描述:

    输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。   


    采用回溯法的思想进行全排列

    import java.util.ArrayList;
    import java.util.Collections;
    public class Solution {
        private ArrayList<String> ret;
        public ArrayList<String> Permutation(String str) {
            char[] chars = str.toCharArray();
            ArrayList<String> list = new ArrayList<>();
            if(chars != null && chars.length > 0) {
                backtracking(chars, 0, list);
                Collections.sort(list);
            }
            return list;
        }
        public void backtracking(char[] chars, int i, ArrayList<String> list){
            if(i == chars.length-1) {
                String s = String.valueOf(chars);
                if(!list.contains(s)) {
                    list.add(s);
                }
            }
            else {
                for(int j = i; j < chars.length; j++) {
                    swap(chars, j, i);
                    backtracking(chars, i+1, list);
                    swap(chars, j , i);
                }
            }
        }
        public void swap(char[] chars, int i, int j) {
            char temp = chars[i];
            chars[i] = chars[j];
            chars[j] = temp;
        }
        
    }
    
    
  • 相关阅读:
    数学名词的意义
    博主个人介绍
    信仰
    一些优质聚佬的Blog推荐
    本Blog一些声明
    母函数第二弹 之 真正的母函数入门
    November!!!
    首“0”纪念
    关于构造函数解题(母函数入门)
    关于Lucas定理的那些事儿
  • 原文地址:https://www.cnblogs.com/yihangZhou/p/10464207.html
Copyright © 2011-2022 走看看