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. 類不匹配高達JSON字符串
- 5. 字符串匹配
- 6. 匹配字符串
- 7. 匹配字符串
- 8. 匹配字符串
- 9. 字符串匹配
- 10. 字符串匹配
- 11. 匹配字符串
- 12. 字符串搜索算法可以快速匹配大量未縮短字符串中的縮寫嗎?
- 13. 字符串boundingRect計算出的高度不匹配的UITextView內容高度
- 14. 提高find_by方法匹配字符串的性能?
- 15. 字符串數組匹配字符串
- 16. 匹配文字字符串'\ $'
- 17. 產品標題的模糊字符串匹配算法
- 18. KMP字符串匹配算法:輔助陣列輸出
- 19. Levenshtein短語的距離/字符串匹配算法
- 20. 嘈雜文本的字符串匹配算法
- 21. 名稱的近似字符串匹配算法
- 22. 首先-發生並行字符串匹配算法
- 23. 返回遞歸匹配的字符串搜索算法 - Java
- 24. 用於ML字符串匹配的神經網絡RNN算法
- 25. java中字符串的語法匹配
- 26. 字符串匹配替代方法
- 27. elisp中的匹配字符串沒有返回匹配字符串匹配的字符串
- 28. php字符串匹配通配符*?
- 29. 匹配字符串通配符
- 30. 字符串搜索/通配符匹配
也許看看這裏: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