码迷,mamicode.com
首页 > 其他好文 > 详细

Valid Anagram

时间:2016-06-18 23:58:54      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

题目链接: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

标签:

原文地址:http://www.cnblogs.com/shirley-ict/p/5597173.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!