Anagrams

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

Note: All inputs will be in lower-case.

思路:回文构词法是由颠倒字母顺序而来的单词。主要的特点就是字母个数和种类都一样,只是改变了其顺序。使用map<string,int> amp来保存一个字符串及其出现的位置。首先,从strs第一个字符串开始遍历,使用一变量s来保存,并对其进行排序;2)在amp中查找s,如果没有找到,则记录amp记录s在strs中的位置下标,如果存在,则将第一次出现的字符串保存入result中去,即result.push_back(strs(amp[s]),并且将amp[s]=-1——防止重复查找,然后再将该strs中的字符串保存入result中

class Solution {

public:

    vector<string> anagrams(vector<string> &strs) {

        vector<string> result;

        if(strs.size()<=1)

            return result;

        map<string,int> amp;

        map<string,int>::iterator it;

        for(int i=0;i<strs.size();i++)

        {

            string s=strs[i];

            sort(s.begin(),s.end());

            it=amp.find(s);

            if(it==amp.end())//在amp中没有发现

                amp[s]=i;

            else

            {

                if(amp[s]>=0)

                {

                    result.push_back(strs[amp[s]]);

                    amp[s]=-1;

                }

                result.push_back(strs[i]);

            }

        }

        return result;

    }

};

 

你可能感兴趣的:(r)