zoukankan      html  css  js  c++  java
  • 剑指offer系列23---字符串排列(不是很理解)

    【题目】输入一个字符串,按字典序打印出该字符串中字符的所有排列。

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

        结果请按字母顺序输出。

     1 package com.exe5.offer;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collections;
     5 
     6 /**23
     7  * 输入一个字符串,按字典序打印出该字符串中字符的所有排列。
     8  * 例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 
     9  * 结果请按字母顺序输出。
    10  * @author WGS
    11  *
    12  */
    13 public class SequenceOfArrays {
    14 
    15     public ArrayList<String> permutation(String str){
    16         ArrayList<String> list=new ArrayList<String>();
    17         if(str==null || str.length()<=0)
    18             return list;
    19         list=permutation(list,str.toCharArray(),0,str.length());
    20         Collections.sort(list);
    21         return list;
    22         
    23     }
    24     private ArrayList<String> permutation(ArrayList<String> list, char[] str, int begin, int length) {
    25         if(begin==length-1){
    26             if(!list.contains(String.valueOf(str))){
    27                 list.add(String.valueOf(str));
    28             }
    29         }else{
    30             for(int i=begin;i<length;i++){
    31                 if(i==begin || str[i]!=str[begin]){
    32                     swap(str,begin,i);
    33                     permutation(list,str,begin+1,length);
    34                     swap(str,begin,i);
    35                 }
    36             }
    37             
    38         }
    39         return list;
    40     }
    41     private void swap(char[] str, int begin, int i) {
    42         char temp=str[begin];
    43         str[begin]=str[i];
    44         str[i]=temp;
    45         
    46     }
    47     public static void main(String[] args) {
    48         SequenceOfArrays s=new SequenceOfArrays();
    49         String str="abc";
    50         ArrayList<String> list=s.permutation(str);
    51         for (String s2 : list) {
    52             System.out.println(s2+" ");
    53         }
    54 
    55     }
    56 
    57 }
  • 相关阅读:
    TS 3.1
    TS 3.1
    TS 3.1
    TS 3.1
    TS 3.1
    TS 3.1
    测试面试总结02
    测试出的缺陷(bug)
    测试用例的内容
    微信发红包测试要点
  • 原文地址:https://www.cnblogs.com/noaman/p/5473464.html
Copyright © 2011-2022 走看看