LeetCode 844 Comparaison de la route LeetCode d'HERODING avec retour arrière

Étant donné deux chaînes de S et T, lorsqu'elles sont entrées dans un éditeur de texte vide, déterminez si elles sont égales et renvoyez le résultat. # Représente le caractère de retour arrière.

Remarque: si vous entrez un caractère de retour arrière pour du texte vide, le texte restera vide.

Exemple 1:

Entrée: S = "ab # c", T = "ad # c"
Sortie: true
Explication: S et T deviendront "ac".

Exemple 2:

Entrée: S = "ab ##", T = "c # d #"
Sortie: true
Explication: S et T deviendront "".

Exemple 3:

Entrée: S = "a ## c", T = "# a # c"
Sortie: vrai
Explication: S et T deviendront "c".

Exemple 4:

Entrée: S = "a # c", T = "b"
Sortie: faux
Explication: S deviendra "c", mais T sera toujours "b".

rapide:

1 <= S.length <= 200
1 <= T.length <= 200
S 和 T 只含有小写字母以及字符 '#'。

Avancée:

你可以用 O(N) 的时间复杂度和 O(1) 的空间复杂度解决该问题吗?

Idée de résolution de problèmes: l'idée
la plus simple est de parcourir chaque chaîne, puis d'enregistrer la chaîne réelle. Si les longueurs des deux chaînes ne sont pas égales, elles doivent être inégales. Si les longueurs sont identiques, parcourez les deux chaînes réelles. Si S'il y a des endroits inégaux au milieu, renvoie directement false, sinon renvoie true. Le code est le suivant:

class Solution {
    
    
public:
    bool backspaceCompare(string S, string T) {
    
    
        vector<char> s1, s2;
        for(int i = 0 ; i < S.length(); i ++){
    
    
            if(S[i] != '#'){
    
    
                s1.push_back(S[i]);
            }else{
    
    
                if(s1.empty()){
    
    
                    continue;
                }else{
    
    
                    s1.pop_back();
                }
            }
        }
        for(int i = 0 ; i < T.length(); i ++){
    
    
            if(T[i] != '#'){
    
    
                s2.push_back(T[i]);
            }else{
    
    
                if(s2.empty()){
    
    
                    continue;
                }else{
    
    
                    s2.pop_back();
                }
            }
        }
        if(s1.size() != s2.size()){
    
    
            return false;
        }
        for(int i = 0; i < s1.size(); i ++){
    
    
            if(s1[i] != s2[i]){
    
    
                return false;
            }
        }
        return true;
    }
};

Je suppose que tu aimes

Origine blog.csdn.net/HERODING23/article/details/109153659
conseillé
Classement