今天看到一道演算法題:給定一長一短的倆個字串a,b,假設a長b短,現在,要你判斷b是否包含在字串a中。
比如,如果是下面兩個字串:
string 1: abcdefghlmnopqrs
string 2: dcgsrqpom
答案是true,所有在string2裡的字母string1也都有。
如果是下面兩個字串:
string 1: abcdefghlmnopqrs
string 2: dcgsrqpoz
答案是false,因為第二個字串裡的z字母不在第乙個字串裡。
我們很容易想到的乙個演算法就是輪詢,每次取短字串中的字元在長字串中找。
方法1:
public class stringin
}//當long陣列迴圈完畢還沒匹配則說明不包含
if(j==templong.length)
}system.out.println("yes");
return true;
}public static void main(string args)
}這種演算法複雜度為o(段字串長度*長字串長度)
方法2:
這種方法是在方法1的基礎上改進的,我們可以先對兩個字串進行快速排序,然後再進行輪詢,這樣複雜度就變成o(mlogm)+o(nlogn)+o(m+n),隨著字串長度的增加,這個演算法的優勢就越來越明顯。
演算法 字串包含
給定兩個分別由字母組成的字串a和字串b,字串b的長度比字串a短。請問,如何最快地判斷字串b中所有字母是否都在字串a裡?為了簡單起見,我們規定輸入的字串只包含大寫英文本母,請實現函式bool stringcontains string a,string b 比如,如果是下面兩個字串 string 1 ...
字串包含演算法
題目如下 給定乙個長字串a和短字串b,如何判斷短字串b中所有字元的是否都在長字串a中?方法如下 1.簡單粗暴的方法 蠻力輪詢 不推薦 思路 遍歷字串b中的每乙個字元,判斷該字元是否在字串a中。時間複雜度 o nm 其中n為a的長度,m為b的長度 2.排序後輪詢 思路 先對字串a和字串b進行排序,然後...
字串包含問題演算法
現在假設有2個字串r和s,其中m r.len n s.len,設計乙個演算法判斷字串s中的每個字元在r串中均存在.顯然,很容易想到的乙個演算法,最粗魯最暴力演算法,其時間複雜度o m n 也就是對s字串中的每個字元在r中進行查詢判斷 這或許是我自己想到的最快的方法了。顯而易見,這樣的演算法或許不是演...