• 剑指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;
        }
    }
  • 相关阅读:
    DB2、ORACLE SQL写法的主要区别
    最快的序列化组件protobuf的.net版本protobuf.net
    Oracle迁移到DB2常用转换
    模拟百度分页算法
    MySQL 自关联查询
    python 实现cm批量上传
    python实现京东秒杀
    百度地图商家爬虫
    django BBS
    python 堆排序
  • 原文地址:https://www.cnblogs.com/zhacai/p/11279012.html
Copyright © 2020-2023  润新知