題目如下:
給定乙個長字串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...