week2

来源:互联网 发布:java 设置useragent 编辑:程序博客网 时间:2024/05/17 06:17

Replace Words(from leetcode)

题意:

In English, we have a concept called root, which can be followed by some other words to form another longer word - let's call this wordsuccessor. For example, the root an, followed by other, which can form another word another.

Now, given a dictionary consisting of many roots and a sentence. You need to replace all thesuccessor in the sentence with the root forming it. If asuccessor has many roots can form it, replace it with the root with the shortest length.

You need to output the sentence after the replacement.

思路:

字符串的替换,首先要把给出的sentence按照空格分成一个个单词,然后替换给出的单词。


代码:

class Solution {
public:
    string replaceWords(vector<string>& dict, string sentence) {
     int i = 0,j = 0;
        set<string> newdict;
        for(i=0;i<dict.size();i++){
            newdict.insert(dict[i]);
        }
        string sentence2 = "";
        string newsentence;
        i = 0;
        for(j=0;j<=sentence.size();j++)
        {
            if(sentence[j]==' ' || j==sentence.size())
            {
                newsentence = sentence.substr(i,j-i);
                for(int k=0;k<newsentence.size();k++)
                {
                 if(newdict.find(newsentence.substr(0,k+1)) !=newdict.end())
                 {
                  newsentence = newsentence.substr(0,k+1);
                        break;
     }
    }
            sentence2+=(newsentence+" ");
            i=j+1;  
            }
           
        }
        return sentence2.substr(0,sentence2.size()-1);
    }
};