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

[leetcode]

时间:2014-11-27 22:11:24      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:leetcode   算法   

问题描述:

Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.


基本思路:

对每个字符串进行排序,然后对排过序的字符串统计出现次数超过1次的。将这些超过1次的字符串的原始串加入结果集


代码:

vector<string> anagrams(vector<string> &strs) {  //C++
        vector<string> result;
        if(strs.size() == 0)
            return result;
        
        vector<string> vec(strs.begin(),strs.end());
        
        for(int i = 0; i < vec.size(); i++)
            sort(vec[i].begin(),vec[i].end());
        
        
        map<string,int> tmap;
        for(int i = 0; i < vec.size(); i++)
            tmap[vec[i]] += 1;
            
        set<string> tset;
        for(map<string,int>::iterator iter = tmap.begin(); iter != tmap.end(); iter++)
            if(iter->second > 1)
                tset.insert(iter->first);
        
        for(int i = 0; i < vec.size(); i++)
        {
            if(tset.count(vec[i] )== 1)
                result.push_back(strs[i]);
        }
        return result;
    }


[leetcode]

标签:leetcode   算法   

原文地址:http://blog.csdn.net/chenlei0630/article/details/41552951

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