子串判断

题目描述

现有一个小写英文字母组成的字符串s和一个包含较短小写英文字符串的数组p,请设计一个高效算法,对于p中的每一个较短字符串,判断其是否为s的子串。

给定一个string数组p和它的大小n,同时给定string s,为母串,请返回一个bool数组,每个元素代表p中的对应字符串是否为s的子串。保证p中的串长度小于等于8,且p中的串的个数小于等于500,同时保证s的长度小于等于1000。

测试样例:

["a","b","c","d"],4,"abc"

返回:[true,true,true,false]

 

第一想法是用kmp,但是忘了string下有函数find。

要合理运用stl里的函数。(站在巨人的肩膀上)

 

 

class Substr {
public:
    vector chkSubStr(vector p, int n, string s) {
        // write code here
        vector ans(n);
        for(int i = 0; i < n; ++i)
        {
            if(s.find(p[i]) != string :: npos)
            {
                ans[i] = true;
            }
            else
            {
                ans[i] = false;
            }
        }
        return ans;
    }
};

 

你可能感兴趣的:(牛客编程题)