首页 > 解决方案 > 包含所有字符的最小窗口的时间复杂度

问题描述

如果我的字符串长度为 N。我的解决方案的时间复杂度是多少?会是 O(N) 吗?我们在计算时间复杂度时是否考虑了加星标的部分?

    for(int k=0;k<str.length();k++){
        if(!map.containsKey(str.charAt(k))) map.put(str.charAt(k),0);
    }
    
    String ans=str;
    int i=0;int j=0;
    int count=map.size();
    while(j<str.length()){
        char ch=str.charAt(j);
    
        if(map.get(ch)==0) count--;
        int value=map.get(ch);
        
        map.replace(ch,++value);
    
        if(count!=0) j++;
        else if(count==0){

            ***while(count==0){
                 char chi=str.charAt(i);
                 value=map.get(chi);
                 map.replace(chi,--value);
                 if(map.get(chi)==0) count++;
                 i++;
            }***
            
            
           if(ans.length()>(str.substring(i-1,j+1).length())){
               ans=str.substring(i-1,j+1);
           }
       


           j++;
        }
    }
return ans;

标签: time-complexity

解决方案


推荐阅读