国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java數據結構及算法實例:樸素字符匹配 Brute Force

2019-11-26 15:08:13
字體:
來源:轉載
供稿:網友
/**  * 樸素字符串算法通過兩層循環來尋找子串,  * 好像是一個包含模式的“模板”沿待查文本滑動。  * 算法的思想是:從主串S的第pos個字符起與模式串進行比較,  * 匹配不成功時,從主串S的第pos+1個字符重新與模式串進行比較。  * 如果主串S的長度是n,模式串長度是 m,那么Brute-Force的時間復雜度是o(m*n)。  * 最壞情況出現在模式串的子串頻繁出現在主串S中。  * 雖然它的時間復雜度為o(m*n),但在一般情況下匹配時間為o(m+n),  * 因此在實際中它被大量使用。  * 該方法的優點是:算法簡單明朗,便于實現記憶。  * 該方法的缺點是:進行了回溯,效率不高,而這些回溯都是沒有必要的。  * 下面是該算法的Java代碼,找到子串的話,返回子串在父串中第一次出現的位置,  * 找不到的話返回0.  */ package al; public class BruteForce {   public static void main(String[] args) {     String waitForMatch = "abbacbabcdabcbec";     String pattern = "abcbe";     BruteForce bruteForce = new BruteForce();     int index = bruteForce.getSubStringIndex(waitForMatch, pattern);     System.out.println("Matched index is "+index);   }   /**    * @author    * @param waitForMatch 主字符串    * @param pattern 模式字符串    * @return 第一次字符串匹配成功的位置    */   public int getSubStringIndex(String waitForMatch, String pattern){     int stringLength = waitForMatch.length();     int patternLength = pattern.length();     // 從主串開始比較     for(int i=0; i<stringLength; i++) {       int k = i; // k指向主串下一個位置       for(int j=0; j<patternLength; j++) {         if(waitForMatch.charAt(k) != pattern.charAt(j)) {           break;         }else {           k++;// 指向主串下一個位置           if(j == patternLength-1) {             return i;           }         }                 }     }     // 匹配不成功,返回0     return 0;   } } 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 栾川县| 昌黎县| 华安县| 库尔勒市| 罗源县| 增城市| 绥化市| 买车| 灵武市| 武邑县| 曲周县| 大兴区| 临海市| 竹山县| 咸丰县| 黑水县| 惠水县| 南溪县| 伊吾县| 封开县| 门源| 信宜市| 浦北县| 拜城县| 荥阳市| 隆化县| 锡林浩特市| 介休市| 三明市| 根河市| 长武县| 周口市| 石屏县| 营口市| 湾仔区| 新源县| 沁源县| 铜山县| 湄潭县| 临潭县| 东港市|