12
A
回答
1
您也可以嘗試
- Z Algorithm:在某些方面甚至整潔比KMP
- Aho Corasick:基於特里和最初用於fgrep
- Rabin Karp:基於哈希
0
就我所知,雙向字符串匹配是字符串匹配的最佳通用算法。它具有線性最壞情況的複雜度,使用恆定的空間,並且不會超出必要的數量。背後的理論非常好。
如果你知道你的用戶不是混蛋,那麼針對你的架構優化的天真的字符串匹配將贏得短的「針」,而Boyer-Moore變種將開始真正爲長「針」做次線性事情。然而,天真的字符串匹配有一個二次最壞的情況,Boyer-Moore可以檢查輸入中的所有字符。處理不匹配所需的額外表格實際上對雙向字符串匹配帶來了令人驚訝的嚴重損失。
-1
import java.util.Scanner;
public class StringMatch {
static int temp,i=0,j=0; static boolean flag=true,matcher=false;
static String str=null,mstr=null;static char astr[],amstr[];
static void getter(){
Scanner sc = new Scanner(System.in);
str = sc.nextLine();
//String str="today is Monday";
astr=str.toCharArray();
mstr = sc.nextLine();
//String mstr="is";
amstr=mstr.toCharArray();
}
static void stringMatch(){
while(i<astr.length){
if(astr[i]==amstr[j]){
while((j!=amstr.length)&&flag){temp=i;
if(astr[i]!=amstr[j]) {flag=false;matcher=false;}
else{matcher=true;}
i++;j++;
//System.out.println(i+"\t"+j);
}if(matcher==true)break;i=temp;}i++;j=0;flag=true;
}
if(matcher==true) {System.out.println("true");}
else {System.out.println("false");}
}
public static void main(String[] args) {
StringMatch.getter();
StringMatch.stringMatch();
}
}
+1
歡迎。你可以通過解釋關於這個算法的一些東西來使這個更好的答案,也許它是如何與問題中提到的相比? – 2016-04-13 19:40:00
相關問題
- 1. 字符串匹配算法
- 2. 字符串匹配算法
- 3. 我的字符串匹配算法速度快嗎?
- 4. 2D字符串匹配:Baker-Bird算法
- 5. 部分字符串匹配算法
- 6. 算法來檢查字符串匹配
- 7. 字符串完成和匹配算法
- 8. 匹配兩個字符串中的單詞時的字符串匹配算法?
- 9. 在C#中的高速字符串匹配
- 10. 加速emacs中的字符串匹配
- 11. 快速字符串匹配MySQL查詢
- 12. java中的高效字符串匹配
- 13. 類不匹配高達JSON字符串
- 14. 解析和匹配計算字符串
- 15. 字匹配算法
- 16. 字符串匹配
- 17. 字符串匹配
- 18. 字符串匹配
- 19. 匹配字符串
- 20. 匹配字符串
- 21. 匹配字符串
- 22. 字符串匹配
- 23. 匹配字符串
- 24. 字符串匹配
- 25. 字符串匹配
- 26. 匹配字符串
- 27. 字符串匹配
- 28. 字符串搜索算法可以快速匹配大量未縮短字符串中的縮寫嗎?
- 29. 一種快速匹配utf-8字符串的方法
- 30. Preg匹配並以短字符串計算結果匹配
也許看看這裏:http://www-igm.univ-mlv.fr/~lecroq/string/index.html – Nabb 2012-07-26 07:09:24
優秀的收集!非常感謝Nabb! – sashank 2012-07-26 08:59:00