安全プランを証明する:文字列の配列(動的計画法、再帰的)

トピック:

文字列の入力は、辞書式順序で文字列の文字のすべての順列を出力します。例えば、入力文字列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<>();
        if(str==null||str.length()==0){
            return result;
        }
        for(int i=0;i<str.length();i++){
            if(i>0&&str.charAt(i)==str.charAt(i-1)){
                continue;
            }
            StringBuilder substr = new StringBuilder().append(str.substring(0,i));
            if(i+1<str.length()){
                substr.append(str.substring(i+1,str.length()));
            }
            ArrayList<String> temp = Permutation(substr.toString());
            if(temp.size()>0){
                for(String ss:temp){
                    StringBuilder sb = new StringBuilder().append(str.charAt(i)).append(ss);
                    result.add(sb.toString());
                }
            }else{
                StringBuilder sb = new StringBuilder().append(str.charAt(i));
                result.add(sb.toString());
            }
            
        }
        return result;
    }
    
}

 

公開された92元の記事 ウォンの賞賛2 ビュー8396

おすすめ

転載: blog.csdn.net/wyplj2015/article/details/104908325
おすすめ