《LeetCode之每日一题》:247.Bigram 分词
Posted 是七喜呀!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《LeetCode之每日一题》:247.Bigram 分词相关的知识,希望对你有一定的参考价值。
题目链接: Bigram 分词
有关题目
给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 "first second third" 形式出现的情况,
其中 second 紧随 first 出现,third 紧随 second 出现。
对于每种这样的情况,将第三个词 "third" 添加到答案中,并返回答案。
示例 1:
输入:text = "alice is a good girl she is a good student", first = "a", second = "good"
输出:["girl","student"]
示例 2:
输入:text = "we will we will rock you", first = "we", second = "will"
输出:["we","rock"]
提示:
1 <= text.length <= 1000
text 由小写英文字母和空格组成
text 中的所有单词之间都由 单个空格字符 分隔
1 <= first.length, second.length <= 10
first 和 second 由小写英文字母组成
题解
法一:一次遍历
参考官方题解
class Solution
public:
vector<string> findOcurrences(string text, string first, string second)
vector<string> words;//将text中的单词取出,存放到words数组中
int start = 0;
int len = text.length();
while(true)
while(start < len && text[start] == ' ')
start++;
//跳出循环时,对应的text[start]为小写字母 或者为 字符串结尾
if (start >= len)
break;
int end = start + 1;
while(end < len && text[end] != ' ')
end++;
//跳出循环时,对应的text[end]为空格
//单词存放至words数组中
words.push_back(text.substr(start, end - start));
start = end + 1;//从text[end]=空格 的下一个位置开始取出单词
vector<string> ret;
//找出所有满足,first second third的字串,记录third至ret中
for (int i = 2; i < words.size(); i++)
if (words[i - 2] == first && words[i - 1] == second)
ret.push_back(words[i]);
return ret;
;
以上是关于《LeetCode之每日一题》:247.Bigram 分词的主要内容,如果未能解决你的问题,请参考以下文章