安全性の問題を証明オファーの注意事項(1)は、文字列に配置されます

要約:

  • 主にアルゴリズムの完全な配列に

    この手順を実行するにはターン数の各アレイの内部:最初の場所の値が、残りの全アレイのそれぞれの数を作ります。for(int j=i;j<arr.length;j++)
  • 選択ソートアルゴリズムでソート文字列を達成するための辞書()(独自のコードを直接Collections.sortを書き込むことはできません)

    compareTo()メソッドを使用して文字列辞書サイズ比較

件名の説明:

文字列の入力は、辞書式順序で文字列の文字のすべての順列を出力します。例えば、入力文字列abcの場合は、ABCのすべての文字列、B、Cが出て配置することができ、ACB、BAC、BCA、CABおよびCBAを印刷します。

説明を入力します。

より9(おそらく繰り返し文字)以下の文字列を入力し、文字は小文字のみが含まれます。

import java.util.ArrayList;
public class Solution {
    public ArrayList<String> Permutation(String str) {
       ArrayList<String> result =new ArrayList<String>();
       if(str==null) return result;
       char [] cha = str.toCharArray();
       PermutationCount(cha,0,result);
       Sort(result);                              //按照字典顺序给字符串排序
       return result;
    }
    
    public static void PermutationCount(char [] arr ,int i,ArrayList<String> list){
        if(i==arr.length-1){                      //递归结束条件,当指向最后一位数时,将字符串添加到ArrayList
            String item = String.valueOf(arr);    
           if(!list.contains(item))
                list.add(item);
        }   
        else{
            for(int j=i;j<arr.length;j++){        //每次递归执行完后不是回到上一层,而是执行循环直到循环结束才返回上一层!!!。
                swap(arr,i,j);                    //将每一个数都和第0位的数交换,其余的数执行下面的代码
                PermutationCount(arr,i+1,list);   //剩余的数递归执行全排列
                swap(arr,i,j);                    //这个数和第0位的数交换后还要还原回去
            }
        }
    }
    
    public static void swap(char [] arr,int i,int j){ //交换数组元素
        char temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
    }
    
    public static void Sort(ArrayList<String> res){  //选择排序把ArrayList里的字符串按字典顺序排序
        for(int i=0;i<res.size()-1;i++){
            int temp=i;
            int j;
            for(j=i+1;j<res.size();j++){
                if(res.get(j).compareTo(res.get(temp))<0)//字符串的按字典顺序比较大小
                    temp=j;
            }
            String str=res.get(temp);
            res.set(temp,res.get(i));
            res.set(i,str);
        }
    }
}

おすすめ

転載: www.cnblogs.com/dongmm031/p/12049578.html