小编Omk*_*kar的帖子

为什么矢量比unordered_map快?

我正在解决LeetCode上的问题,但是没有人能够解释我的问题。

问题是这样的:

给定一个任意的赎金票据字符串和另一个包含所有杂志字母的字符串,编写一个函数,如果可以从杂志中构造赎金票据,则该函数将返回true;否则,它将返回false。

杂志字符串中的每个字母只能在赎金记录中使用一次。

注意:您可以假定两个字符串都只包含小写字母。

canConstruct("a", "b") -> false
canConstruct("aa", "ab") -> false
canConstruct("aa", "aab") -> true
Run Code Online (Sandbox Code Playgroud)

我的代码(需要32毫秒):

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        if(ransomNote.size() > magazine.size()) return false;
        unordered_map<char, int> m;

        for(int i = 0; i < magazine.size(); i++)
            m[magazine[i]]++;

        for(int i = 0; i < ransomNote.size(); i++)
        {
            if(m[ransomNote[i]] <= 0) return false;
            m[ransomNote[i]]--;
        }
        return true;
    }
};
Run Code Online (Sandbox Code Playgroud)

代码(我不知道为什么会更快-需要19毫秒):

bool canConstruct(string ransomNote, string magazine) {
        int lettersLeft = ransomNote.size(); // Remaining # of …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm dictionary unordered-map vector

6
推荐指数
1
解决办法
534
查看次数

标签 统计

algorithm ×1

c++ ×1

dictionary ×1

unordered-map ×1

vector ×1