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;
        }
    }
  • 相关阅读:
    MQTT介绍与使用
    SVN的搭建与使用
    Git版本控制之ubuntu搭建Git服务器
    蓝奏云的速度好快
    放大器的定义和主要参数
    模拟信号导论
    模拟电子电路学习笔记
    二极管单向导电的理解
    让蜂鸣器发声
    蜂鸣器的介绍
  • 原文地址:https://www.cnblogs.com/zhacai/p/11279012.html
Copyright © 2011-2022 走看看