leetcode ventanas deslizantes 3 La subcadena más larga sin caracteres repetidos

Directorio de artículos

LA

problema

solución

Código



/*
思路: 这个题没有目标值,所以就不能套用模板了。 因为need需要实时更新。  这里和之前不一样,要在收缩窗口完成后更新 

-  define window
-  define left right, maxlen = 1.
- while right<size
- -  a = s[right] right++
- -  window++; 
- -  while s[right] in window 
- - - if(right- left>maxlen) maxlen = right-left;
- - - left = right
*/





class Solution {
    
    
public:
   int lengthOfLongestSubstring(string s) {
    
    
       if(!s.size())return 0;
       
       unordered_map<char, int> window;
       int left = 0,right = 0 , maxlen = 1;
       while(right<s.size()){
    
    
           char a = s[right];
           
           window[a]++;
           right++;
           
           
           while(window[a]>1){
    
    

               char d = s[left];
               left ++;
               window[d]--;
               
           }
           if(right-left>maxlen)maxlen = right -left;
       }
       return maxlen;


   }
};


Resumen y reflexión

  1. Los resultados se actualizan después de que se completan la contracción y la expansión, porque hay una sola situación que ocurre aquí.

Supongo que te gusta

Origin blog.csdn.net/liupeng19970119/article/details/114106549
Recomendado
Clasificación