zoukankan      html  css  js  c++  java
  • 利用map,以一个单词为键,以与它相差一个字母的单词组集作为值的算法编程

    map<string,vector<string> > cAW(const vector<string> &words )
    {
        map<string,vector<string> > adjWords;//要选的map
        map<int,vector<string> > wordsByLength;//相同个数的单词组
    
        //分组以每个单词的个数为标准
        for(int i=0;i<words.size();i++)
            wordsByLength[words[i].length()].push_back(words[i]);
        //每一组中的单独操作
        map<int,vector<string> >::const_iterator itr;
        for(itr=wordsByLength.begin();itr!=wordsByLength.end();++itr)
        {
            const vector<string> &groupWords=itr->second;//把相同长度n的单词组合赋给groupWords
            int groupNum=itr->first//将单词长度n的信息赋给groupNum
    
                //单独一组中每个位置的单独操作
                for(int i=0;i<groupNum;i++)
                {
                    //清楚被给位置的字符,计算剩下的字符,相同为一组
                    map<string,vector<string> > repToWord;
                    for(int j=0;j<groupWords.size();j++)
                    {
                        string rep=groupWords[j];      //依次取出这组的每一个单词,赋给rep
                        rep.erase(i,1);                //每个单词去掉第i给字符
                        repToWord[rep].push_back(groupWords[j]);                //把剩下的字符作为一个键赋给repToWord,并把这个单词作为值赋给repToWord
                    }
    
                    //然后找出repToWord中值的数量超过一个的键组
                    map<string,vector<string> >::const_iterator itr2;
                    for(itr2=repToWord.begin();itr2!=repToWord.end();++itr2)
                    {
                        const vector<string> &clique=itr2->second; //把reToWord中每一个组的单词组取出赋给clique
                        if(clique.size()>=2)//如果每一组中单词的个数大于1个,即可以进行比较
                            for(int p=0;p<clique.size();p++)
                                for(int q=p+1;q<clique.size();q++)
                                {
                                    adjWords[clique[p] ].push_back(clique[q]);
                                    adjWords[clique[q] ].push_back(clique[p]);//把每一个单词作为一个键,和它只差了第i个字母的放到这个键组的值中
                                }
                    }
                }
        }
        return adjWords;
    }
  • 相关阅读:
    如何打开肉鸡的3389端口(xp的)
    XP鲜为人知的实用技巧(一)
    利用Ms08067工具进行溢出攻击
    教你建一个别人看不到打不开的文件夹
    在IE上显示自己的名字
    QQ使用的七大非常规秘籍
    第五篇:Python函数基础篇
    Centos7之Systemd(Service文件)详解
    Linux GCC make文件的写法3
    DSP/BIOS学习笔记——2.SWI
  • 原文地址:https://www.cnblogs.com/CClarence/p/5157028.html
Copyright © 2011-2022 走看看