トピック:
文字列の入力は、辞書式順序で文字列の文字のすべての順列を出力します。例えば、入力文字列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;
}
}