• 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;
        }
    };
  • 相关阅读:
    观光公交
    审查(银)
    小木棍 && 愤怒的小鸟
    SDOI2008 仪仗队 && SDOI2012 Longge的问题 && q
    斗地主 && Mayan游戏 && 作业调度方案
    过河
    跳跳棋
    count
    Cow Tennis Tournament
    luogu P1534不高兴的津津(升级版)
  • 原文地址:https://www.cnblogs.com/awy-blog/p/3722736.html
Copyright © 2020-2023  润新知