字串是否包含問題

2021-06-22 01:26:45 字數 862 閱讀 6821

假設這有兩個分別由字母組成的字串a另外字串b,字串b的字母數較字串a少一些。什麼方法能最快地查出字串b所有字母是不是都在字串a裡?也就是說判斷字串b是不是字串a的真子集(為了簡化,姑且認為兩個集合都不是空集,即字串都不為空。)。

解法一:暴力輪詢

就是將b中的每一字元都和a中的字元做對比,思想簡單此處就不再實現

解法二:普通排序

就是先對a 和 b做排序,然後對比b和a

/**

* * 普通排序的方式

* * @author zhangjunshuai

* @date 2014-5-14 下午4:51:31

*/public static void sortmy()

++pb;

}}

解法三:計數比較法

因為字元總數都在乙個固定範圍內,小寫字母是26個,所以我們可以建立乙個長度為26的整數組,用來記錄a中的字元出現的次數,為了便於b對比。我們又利用所有字元相對於初始字母『a』的距離做陣列下標,這樣的話我們就可以用count[1] 記錄在a中字母b出現的次數,以此類推。遍歷完a之後,再讓b和count陣列比較,如果出現count中為0,而b中有的則b不完全包含在a中。

/**

* * 計數比較法

* * @author zhangjunshuai

* @date 2014-5-14 下午5:22:41

*/public static void countmy()

for(char bb :b)

} }

ps:本文是本人在學習july演算法時候所做筆記,所有思想目前都來自此位址。

字串是否包含問題

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

演算法 字串是否包含問題

在網上看到這篇文章 一次谷歌面試趣事。覺得其中的演算法題以及作者的解決思路很有趣,就拿來分享一下吧。問題假設這有乙個各種字母組成的字串,假設這還有另外乙個字串,而且這個字串裡的字母數相對少一些。從演算法是講,什麼方法能最快的查出所有小字串裡的字母在大字串裡都有?比如,如果是下面兩個字串 string...

字串包含問題

字串包含問題 判斷小字串的所有字元是否大字串都有 思路一 針對小字串的每乙個字元一一與大字串的字元輪詢比較即可,很明顯時間複雜度為o n m bool compare string s1,string s2 if j s2.length return true 思路二 對兩個字串分別排序,同時依次輪...