【leetcode】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"]
 

char ** findOcurrences(char * text, char * first, char * second, int* returnSize){
    int i,j,len=strlen(text),n=0,k=0;
    char** words = (char**)calloc(len,sizeof(char*));
    char** thirds = (char**)calloc(len,sizeof(char*));
    char* word = text;
    for (i=0; i<=len; i++)
    {
        if (text[i] == ' ' || text[i] == '\0')
        {
            text[i] = '\0';
            words[n++] = word;
            word = &text[i+1];        
        }
    }
    for (i=0; i<n-2; i++)
    {
        if (!strcmp(words[i],first) && i+1<n && !strcmp(words[i+1],second))
        {
            if (i+2 < n) thirds[k++] = words[i+2];        
        }
    }
    *returnSize = k;
    return thirds;
}

 

posted @ 2020-09-14 09:00  温暖了寂寞  阅读(129)  评论(0)    收藏  举报