【LeetCode】242. Valid Anagram(考察算法优化)

Question

Given two strings s and t, write a function to determine if t is an anagram of s.

For example,
s = “anagram”, t = “nagaram”, return true.
s = “rat”, t = “car”, return false.

Note:
You may assume the string contains only lowercase alphabets.

My code

bool isAnagram(string s, string t) {
        sort(s.begin(), s.end());
        sort(t.begin(), t.end());
        return s==t;
    }

However, my solution costs O(n logn).

O(n) solution:

class Solution {
public:
    bool isAnagram(string s, string t) {
        if(s.size() != t.size())    return false;

        vector<int> vec(26, 0);

        for(auto n : s)
            ++vec[n - 'a'];
        for(auto n : t)
            --vec[n - 'a'];

        for(auto n : vec)
            if(n != 0)  return false;

        return true;
    }
};

你可能感兴趣的:(LeetCode,优化)