La plus longue sous-chaîne de l'algorithme classique sans caractères répétés

Sous-chaîne la plus longue sans caractères répétés
1. Description du titre:
Étant donné une chaîne, veuillez trouver la longueur de la sous-chaîne la plus longue sans caractères répétés.

Exemple 1:

Entrée: "abcabcbb"
Sortie: 3
Explication: Étant donné que la sous-chaîne la plus longue sans caractères répétés est "abc", sa longueur est de 3.

Exemple 2:

Entrée: "bbbbb"
Sortie: 1
Explication: Comme la sous-chaîne la plus longue sans caractères répétés est "b", sa longueur est 1.

Exemple 3:

Entrée: "pwwkew"
Sortie: 3
Explication: Étant donné que la plus longue sous-chaîne sans caractères répétés est "wke", sa longueur est de 3.

Veuillez noter que votre réponse doit être la longueur de la sous-chaîne, "pwke" est une sous-séquence, pas une sous-chaîne.

2 、 我 的 代码 :
classe Solution {
public:
int lengthOfLongestSubstring (string s) {
int total_len = s.size ();
int max_len = 1;
int len ​​= 1;
int i = 0, j = 0;
map <char, bool> before_value;
if (total_len <= 1)
return total_len;

    for(i = 0; i < total_len - 1; ++i) {
        len = 1;
        before_value.clear();
        before_value[s[i]] = true;
        for(j = i+1; j < total_len; ++j) {
            if(before_value[s[j]] != true) {
                before_value[s[j]] = true;
                ++len;
            }else {
                if(len > max_len)
                    max_len = len;
                break;
            }
            if(len > max_len)
                max_len = len;
        }
    }

    return max_len;

}

};

3. Bonne solution solution de cours en ligne
{

Publique:

int lengthOfLongestSubstring(string s) {
    
    if(s.size() == 0) return 0;
    
    unordered_set<char> lookup;
    
    int maxStr = 0;
    
    int left = 0;
    
    for(int i = 0; i < s.size(); i++){
        
        while (lookup.find(s[i]) != lookup.end()){
            
            lookup.erase(s[left]);
            
            left ++;
        
        }
        
        maxStr = max(maxStr,i-left+1);
        
        lookup.insert(s[i]);

   }
    
   return maxStr;

}
};

4. Où vous pouvez vous améliorer. La
saisie d'une longue chaîne lors de l'exécution prend plus de temps que la limite de temps
5. Optimiser le code pour être simple.

6. Penser

Publié 4 articles originaux · Likes0 · Visites 25

Je suppose que tu aimes

Origine blog.csdn.net/digitaluser/article/details/105587648
conseillé
Classement