Leetcode 1078.Bigram 分词

题目地址

思路

这道题读完题目后,思路大概就清晰了。
首先将text分词,存入一个vector中。
之后就是对firstsecond的配对了,此时就比较巧妙地将i设置为2开始,这样就避免了越界行为。
如果上面这句话没看懂,你看看下面的代码就很清晰了。

代码实现(C++)

class Solution {
    
    
public:
    vector<string> findOcurrences(string text, string first, string second) 
    {
    
    
        vector<string> words;
        int left=0;
        while(true)
        {
    
    
            string word;
            if(left==text.size())
            {
    
    
                break;
            }
            for(;left<text.size();left++)
            {
    
    
                if(text[left]!=' ')
                {
    
    
                    word+=text[left];
                    if((left+1)==text.size())
                    {
    
    
                        words.push_back(word);
                    }
                }
                else
                {
    
    
                    left++;
                    words.push_back(word);
                    break;
                }
            }
        }
        for(int i=0;i<words.size();i++)
        {
    
    
            cout<<words[i]<<" ";
        }
        vector<string> res;
        for(int i=2;i<words.size();i++)
        {
    
    
            
            if(words[i-2]==first&&words[i-1]==second)
            {
    
    
                res.push_back(words[i]);
            }
        }
        return res;
    }
};

总结

今天的每日一题还是比较考验简单的基本功。

猜你喜欢

转载自blog.csdn.net/weixin_45847364/article/details/122155407