I_m_sfg's blog

By I_m_sfg, history, 16 months ago, In English

Hi, this side Imsfg. I used both map/unordered_map since long time. I observed some facts about about this special stl.

1- According to me use mp[i]==0 instead of mp.find(i) because let suppose you increase the value of mp[i]++.after that you decrease the same value mp[i]--. after u find mp.find(i). it show true but according to you this give 0 and does not exist in map. if you not understand what i am saying please see both code u can observed what i say. Case 1-use mp[i]==0 int longestKSubstr(string s, int k) {

int i=0,j=0;

    int cnt=0;

    int ans=-1;

    map<char,int>mp;

    while(i<s.size()){

        while(cnt>k and j<=i){

            mp[s[j]]--;

            if(mp[s[j]]==0){

                cnt--;

            }
            j++;

        }
        if(mp[s[i]]==0){

            cnt++;

        }
        if(cnt==k){

            ans=max(ans,i-j+1);

        }
        mp[s[i]]++;

        i++;

    }


    return ans;
}

Case 2- use mp.find(i)

    //User function template for C++

class Solution{

public:

int longestKSubstr(string s, int k) {


    int i=0,j=0;

    int cnt=0;

    int ans=-1;

    map<char,int>mp;

    while(i<s.size()){

        while(cnt>k and j<=i){

            mp[s[j]]--;

            if(mp[s[j]]==0){

                cnt--;

            }

            j++;

        }
        if(mp.find(s[i])==mp.end()){

            cnt++;

        }

        if(cnt==k){

            ans=max(ans,i-j+1);

        }

        mp[s[i]]++;

        i++;

    }

    return ans;

}

};

hopefully You understand what I am saying.....

  • Vote: I like it
  • +3
  • Vote: I do not like it

| Write comment?