字串包含問題

2021-06-06 03:24:47 字數 596 閱讀 8584

字串包含問題:判斷小字串的所有字元是否大字串都有

思路一:針對小字串的每乙個字元一一與大字串的字元輪詢比較即可,很明顯時間複雜度為o(n*m)

bool compare(string s1,string s2)

}if(j==s2.length())

}return true;

}

思路二:對兩個字串分別排序,同時依次輪詢,則排序o(mlogm)+o(nlogn),輪詢o(m+n);總時間複雜度為o(mlogm)+o(nlogn)+o(m+n)

int partition(string &str,int low,int high)

}swap(str[i+1],str[high]);

return i+1;}

void quicksort(string &str,int low,int high)

{ if(low

思路三:hash表,將小字串對映到初始化為0的表中,有則改為1.在輪詢大字串,有則將1改為0。最後如果表全為零,包含,否則不包含。則輪詢了一次,複雜度為o(m+n)

字串包含問題

假設這有乙個各種字母組成的字串a,和另外乙個字串b,字串裡b的字母數相對少一些。什麼方法能最快的查出所有小字串b裡的字母在大字串a裡都有?比如,如果是下面兩個字串 string 1 abcdefghlmnopqrs string 2 dcgsrqpo 答案是true,所有在string2裡的字母st...

字串包含問題

兩個字串s1和s2,假設s1長度大於等於s2長度,判斷s2是否為s1的乙個子集。例如 s1 abcdefghi,s2 acefg,由於s2中的每個元素都出現在s1中,說明s1包含s2.若s2 acefgk,由於k不在s1中,因此s1不包含s2。設s1長度為m,s2長度為n 方法1 brute for...

字串包含問題

1 問題描述 存在字串1和字串2,假設字串2相對較短,如何快速地判定字串2中的字元都存在於字串1裡 假定字串只包含字母 2 舉例 字串1為abcdefghijk,字串2為abcde,則字串1包含字串2,因為字串2中包含的字母在字串1中也都有。3 解決方案 思路一 最直接的思路就是針對字串2中的每個字...