tema:
Una entrada de cadena, imprime todas las permutaciones de los caracteres de la cadena en orden lexicográfico. Por ejemplo abc cadena de entrada, abc imprimir todas las cadenas de caracteres a, b, c se pueden organizar a cabo, acb, bac, bca, cab y CBA.
Introduzca una descripción:
Introduzca una cadena de no más de 9 caracteres (posiblemente repetidas), caracteres incluyen letras minúsculas solamente.
Respuesta:
método recursivo, como sigue:
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;
}
}