Valid Anagram

Posted Shirley_ICT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Valid Anagram相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode.com/problems/valid-anagram/

题目大意:就是判断两个字符串是否由相同的字符组成(字符个数也要相同)

1)排序方法

将字符串进行排序以后,如果想等,即可

代码如下:

class Solution {
public:
    bool isAnagram(string s, string t) {
        string s_t = s;
        string t_t = t;
        sort(s_t.begin(), s_t.end());
        sort(t_t.begin(), t_t.end());
        if(s_t == t_t)
        {
            return true;
        }

        return false;
    }
};

 

2)hash方法

先统计第一个字符串中各个字符出现的次数,然后再遍历第二个字符串,相同则hash表中的次数减1,最后判断hash表中是否所有字符出现次数均为0

代码如下:

class Solution {
public:
    bool isAnagram(string s, string t) {

        int n = s.size();
        int m = t.size();
        map<char, int> maps;
        for(int i=0; i<n; ++i)
        {
            if(maps.find(s[i]) == maps.end())
            {
                maps.insert(make_pair(s[i], 1));
            }
            else
            {
                maps[s[i]]++;
            }
        }

        for(int i=0; i<m; ++i)
        {
            if(maps.find(t[i]) == maps.end())
            {
                return false;
            }
            maps[t[i]]--;
            if(maps[t[i]] < 0)
            {
                return false;
            }
        }

        map<char, int>::iterator it = maps.begin();
        for(; it!=maps.end(); ++it)
        {
            if(it->second != 0)
            {
                return false;
            }
        }
        return true;
    }
};

 

以上是关于Valid Anagram的主要内容,如果未能解决你的问题,请参考以下文章

242. Valid Anagram

242. Valid Anagram

242. Valid Anagram

242. Valid Anagram

242. Valid Anagram

Valid Anagram