《Cracking the Coding Interview程式設計師面試金典》----子串判斷

塵封的記憶0發表於2017-05-03
時間限制:3秒 空間限制:32768K 熱度指數:660
本題知識點: 字串 高階結構
 演算法知識視訊講解

題目描述

現有一個小寫英文字母組成的字串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]

程式碼如下:

class Substr {
public:
    vector<bool> chkSubStr(vector<string> p, int n, string s) {
        // write code here
        vector<bool> IsSub(n,false);//記錄狀態,判斷p中的對應字串是否為s的子串  
          
        for(int i = 0;i < n;++i){  
            string substr = p[i];//p中對應字串  
              
            int num = s.find(substr);//查詢substr是否在s中,如果不在,num為負數  
            if(num >= 0){  
                IsSub[i] = true;  
            }  
        }  
          
        return IsSub;  
    }
};

不懂的可以加我的QQ群:261035036(IT程式設計師面試寶典

群) 歡迎你到來哦,看了博文給點腳印唄,謝謝啦~~



相關文章