字串包含演算法

2021-07-22 01:45:26 字數 600 閱讀 5742

題目如下:

給定乙個長字串a和短字串b,如何判斷短字串b中所有字元的是否都在長字串a中?

方法如下:

1.簡單粗暴的方法-蠻力輪詢【不推薦】

思路:遍歷字串b中的每乙個字元,判斷該字元是否在字串a中。

時間複雜度:o(nm) 其中n為a的長度,m為b的長度

2.排序後輪詢

思路:先對字串a和字串b進行排序,然後再對兩個字串依次輪詢。

時間複雜度:排序時間(o(nlogn+mlogm))+線性掃瞄時間(o(n+m))

3.素數相乘法

思路:將字串a中的每個字元對應到乙個素數上,計算a中所有素數的乘積a;同樣的方式計算b中的所有素數的乘積b;

如果b能整除a則在a中。

時間複雜度:o(m+n)

4.計數排序原理的方法:將a中的字元計數結果放在計數陣列中,輪詢b中字元,定位在計數陣列的位置,

取出值如果存在==0的則表示有b不在a中。

時間複雜度:o(m+n)

5.雜湊表法

將a中的元素放在雜湊表中,輪詢b中的元素是否在雜湊表中,都在則表示b在a中。

6.位運演算法

跟雜湊表類似用整數代替雜湊表

演算法 字串包含

給定兩個分別由字母組成的字串a和字串b,字串b的長度比字串a短。請問,如何最快地判斷字串b中所有字母是否都在字串a裡?為了簡單起見,我們規定輸入的字串只包含大寫英文本母,請實現函式bool stringcontains string a,string b 比如,如果是下面兩個字串 string 1 ...

字串包含問題演算法

現在假設有2個字串r和s,其中m r.len n s.len,設計乙個演算法判斷字串s中的每個字元在r串中均存在.顯然,很容易想到的乙個演算法,最粗魯最暴力演算法,其時間複雜度o m n 也就是對s字串中的每個字元在r中進行查詢判斷 這或許是我自己想到的最快的方法了。顯而易見,這樣的演算法或許不是演...

字串包含

問題 給定兩個分別由字母組成的字串a和字串b,字串b的長度比字串a短。請問,如何最快地判斷字串b中所有字母是否都在字串a裡?為了簡單起見,我們規定輸入的字串只包含大寫英文本母,請實現函式bool stringcontains string a,string b 比如,如果是下面兩個字串 string...