對於字串s和t,若t是s子串,返回t在s中的位置(t的首字元在s中對應的下標),否則返回-1。
採用直接窮舉法求解,稱為bf演算法。該演算法從s的每乙個字元開始查詢,看t是否會出現。
int
bf(string s, string t)
else}if
(j == t.
length()
)return i - j;
else
return-1
;}
有兩個字串s和t,設計乙個演算法求t在s**現的次數。例如,s=「abababa」,t=「aba」,則t在s**現2次。
採用bf演算法思路。用num記錄t在s**現的次數(初始時為0)。
當在s中找到t的一次出現時,num++,此時j=t的長度,i指向s中本次出現t子串的下乙個字元,所以為了繼續查詢t子串的下一次出現,只需要置j=0。
int
count
(string s, string t)
else
if(j = t.
length()
)}return num;
}
字串匹配 蠻力 KMP
前兩篇文章是從網上搜尋的,知道了next陣列可以有多種表示方法,但感覺kmp演算法詳解裡面第二種表示法給的程式有點小問題,今天自己改進了下,然後在leetcode strstr 上驗證了下,發現自己改進的程式可以ac,證明沒有問題 現在在這篇部落格中總結蠻力 kmp bm演算法的各種ac解法 蠻力法...
蠻力演算法字串匹配
在這裡我們運用蠻力演算法解決,另外此問題還能用kmp演算法。該演算法的做法是將模式 也就是較短的子串,長度為m 對準文字 也就是較長的字串,長度為n 的前m個字元,從左到右匹配每一對相應的字元,如果有m對字元都匹配成功,那麼演算法停止,或者當遇到有一對不匹配時就將模式向右移一位,然後繼續從模式的第乙...
求解字串中最長對稱字串長度
問題 輸入乙個字串,輸出該字串中對稱的子字串的最大長度。比如輸入字串 google 由於該字串裡最長的對稱子字串是 goog 因此輸出4。分析 暴力法,窮舉所有的子字串,然後判斷字串是否是對稱字串,如果是,則計算出長度和當前最長的字串比較,如果長度更長,更新結果。這種解法的時間複雜度為o n 2 o...