C++ | map.count() vs map[bool] | TLE

I was trying this problem on leetcode,
https://leetcode.com/contest/weekly-contest-297/problems/naming-a-company/
I've observed the following

My Code :

long long distinctNames(vector<string>& ideas) {
        unordered_map<string,bool> isPresent;
        vector<vector<long long>> dp(26,vector<long long>(26,0));
        int n = ideas.size();
        long long ans = 0;
        
        for(int i = 0; i < n; i++)
        isPresent[ideas[i]] = true;
        
        for(int i = 0; i < n; i++)
        {
            char x = ideas[i][0];
            string ts = ideas[i];
            
            for(int j = 0; j < 26; j++)
            {    
                char y = 'a' + j;
                ts[0] = y;
                if(!isPresent[ts])
                    dp[x-'a'][j]++;
            }
            
        }
        
    
        for(int i = 0; i < 26; i++)
        {
            for(int j = 0; j < 26; j++)
            {
                if(i==j) continue;
                ans += (dp[i][j] * dp[j][i]);
            }
        }
        
        return ans;
        
    }

This code was getting TLE (85/89).

But, in the same code, if I replace

!isPresent[ts]

with

!isPresent.count(ts)

Same code runs much faster and passes.

Anyone can explain why ?

Comments (1)