Oferta 38 de Sword Finger. Disposición de las cuerdas (retroceso)

Ingrese una cadena de caracteres e imprima todas las permutaciones de caracteres en la cadena de caracteres.

Puede devolver esta matriz de cadenas en cualquier orden, pero no puede haber elementos duplicados en ella.

Ejemplo:

Entrada: s = "abc"
Salida: ["abc", "acb", "bac", "bca", "cab", "cba"]

análisis:

Para solucionar el problema, debe prestar atención a si la cadena o matriz dada puede contener elementos repetidos. Esta pregunta puede contener elementos repetidos, que es diferente de las 46 preguntas de Likou. Aquí, una matriz usada se utiliza para marcar qué elementos se han utilizado para evitar el uso de un elemento. Varias veces (poda), y luego utilizar el mecanismo de deduplicación automática de unordered_map para filtrar las combinaciones repetidas (por ejemplo, dado s = "aab", habrá aab recursivamente desde la primera a, y desde la segunda a También hay aab después de la recursividad, si el título no contiene elementos repetidos, este problema no ocurrirá)

La implementación de ps: unordered_map es una tabla hash, que es más rápida que el mapa implementado con árboles rojo-negro.

class Solution {
    
    
public:
    vector<string> v;
    string tempS;
    unordered_set<string> ss;
    void backtracking(string& s, vector<bool>& used){
    
    
        if(tempS.size() == s.size()){
    
    
            if(ss.find(tempS) != ss.end()) return;
            else{
    
    
                ss.insert(tempS);
                v.push_back(tempS);
                return;
            }
        }
        for(int i = 0; i < s.size(); i++){
    
    
            if(used[i] == true) continue;  
            used[i] = true;
            tempS.push_back(s[i]);
            backtracking(s, used);
            tempS.pop_back();
            used[i] = false;
        }
        
    }
    vector<string> permutation(string s) {
    
    
        vector<bool> used(s.size(), false);
        backtracking(s, used);
        return v;
    }
};

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_34612223/article/details/114328227
Recomendado
Clasificación