字串包含問題:判斷小字串的所有字元是否大字串都有
思路一:針對小字串的每乙個字元一一與大字串的字元輪詢比較即可,很明顯時間複雜度為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中的每個字...