zoukankan      html  css  js  c++  java
  • 剑指offer-字符串的排序

    题目描述

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

    输入描述:

    输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
    import java.util.ArrayList;
    import java.util.Collections;
    public class Solution {
        ArrayList<String> re ;
        public ArrayList<String> Permutation(String str) {
           re = new ArrayList<String>();
           if(str==null||str.length()==0){
               return re;
           }
           char[] ch= str.toCharArray();
           help(ch,0,ch.length-1);
           Collections.sort(re);
           return re;
        }
        public void help(char[] ch,int left,int right){
            if(left ==right){
                re.add(String.valueOf(ch));
                return;
            }
            for(int i = left;i<=right;i++){
                if(i==left||ch[i]!=ch[left]){//字符可能重复
                    swap(ch,left,i);
                    help(ch,left+1,right);
                    swap(ch,i,left);
                }
            }
        }
        private void swap(char[] s,int i,int j){
            char t = s[i];
            s[i] =s[j];
            s[j] =t;
        }
    }
  • 相关阅读:
    MySQL--06
    MySQL--05
    MySQL--04
    MySQL--03
    MySQL--02
    MySQL--01
    JavaScript3
    JavaScript2
    四大函数式接口 函数型接口 断定型接口 消费型接口 供给型接口 流式计算
    课后作业-阅读任务-阅读提问-4
  • 原文地址:https://www.cnblogs.com/zhacai/p/11279012.html
Copyright © 2011-2022 走看看