• 剑指Offer题目:字符串的排列


    题目描述:

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

    题目分析:

    最简单的是使用字典序生成法,这样可以把有重复字符串的情况也考虑进去。

    Java实现代码:

    import java.util.ArrayList;
    import java.util.Arrays;
    public class Solution {
        
        private ArrayList<String> res = new ArrayList<String>();
        
        public ArrayList<String> Permutation(String str) {
            int len = str.length();
            if(len == 0) return res;
            if(len == 1) {res.add(str); return res; }
            
            char [] seq = str.toCharArray();
            Arrays.sort(seq);
            res.add(String.valueOf(seq));
          
            while(true){
              int k = len-1; 
              
              while(k>=1 && seq[k-1]>=seq[k]){
                  k--;
              }
              if(k == 0) break;
              k--;
             
              int l = k + 1;
              while(l<len && seq[l] > seq[k]){
                  l++;
              }
              l--;
              swap(seq, k,l);
              reverse(seq, k+1);
              res.add(String.valueOf(seq));
                
            }
            
            return res;
           
        }
        
        
        public void reverse(char[] seq, int start){
            int len = seq.length;
            if(len == 0) return;
            
            for(int i=0; i< (len-start)>>1; ++i){
                int p = start + i;
                int q = len - i-1;
                if(p == q) return;
                swap(seq, p, q);
                
            }
            
        }
        
        public void swap(char[] seq, int a, int b){
            char temp = seq[a];
            seq[a] = seq[b];
            seq[b] = temp;
        }
    }
    技进乎艺,艺进乎道
  • 相关阅读:
    第3次作业卷积神经网络
    SpringCloud Sidecar 整合.Net WebApi
    redefinition of class解决
    DP学习笔记
    NOIP2018 Day2毒瘤题目
    NOIP Day1总结
    关于DP
    这次的PION的总结
    NOIP模拟赛D2T1自己的解题思路
    ABAP Editor自动完成功能
  • 原文地址:https://www.cnblogs.com/weekend/p/7128444.html
Copyright © 2020-2023  润新知