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;
        }
    }
  • 相关阅读:
    移动及pc端实现签名功能
    中文字符长度与英文字符长度的计算
    IE8部分兼容问题及解决方法
    如何本地搭建手机可访问的web网页
    MYSQL索引的作用和创建
    HTTP协议
    data.json
    axios
    axios基本用法
    Component 初识组件
  • 原文地址:https://www.cnblogs.com/zhacai/p/11279012.html
Copyright © 2011-2022 走看看