Sort by

recency

|

2433 Discussions

|

  • + 0 comments

    My C++ solution:

    vector<int> matchingStrings(vector<string> stringList, vector<string> queries) {
        map<string, int> mpp;
        vector<int> res;
        for(string s: stringList) mpp[s]++;
        for(string s: queries) res.push_back(mpp[s]);
        return res;
    }
    
  • + 0 comments

    My Java solution:

    public static List<Integer> matchingStrings(List<String> stringList, List<String> queries) {
            // Write your code here
            Map<String, Integer> stringCount = new HashMap<>();
            stringList.forEach(entry -> stringCount.compute(entry, (k, v) -> v == null ? 1 : v + 1));
            return queries.stream().map(query -> stringCount.getOrDefault(query, 0)).collect(Collectors.toList());
        }
    
  • + 0 comments

    c# linq, yield

    public static IEnumerable matchingStrings(List stringList, List queries) {
    foreach (var q in queries) { yield return stringList.Count(j=>j==q); } }

  • + 0 comments

    Here's how we can do it in c#

    public static List matchingStrings(List stringList, List queries) { List totalCount = new List();

        foreach(var query in queries){
            int count = 0;
            for(int i = 0; i < stringList.Count; i++){
                if(query == stringList[i]){
                    count++;
                }
            }
            totalCount.Add(count);
        }
    
        return totalCount;
    }
    
  • + 0 comments

    Python: allocate extra space for linear runtime

    from collections import Counter
    
    def matchingStrings(stringList, queries):
        # Write your code here
        counts = Counter(stringList)
        return [counts[query] for query in queries]