Demostrar la oferta de seguridad: arreglo de cuerdas (programación dinámica, recursiva)

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;
    }
    
}

 

Publicado 92 artículos originales · ganado elogios 2 · Vistas 8396

Supongo que te gusta

Origin blog.csdn.net/wyplj2015/article/details/104908325
Recomendado
Clasificación