亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java數(shù)據(jù)結構及算法實例:樸素字符匹配 Brute Force

 更新時間:2015年06月20日 11:02:03   投稿:junjie  
這篇文章主要介紹了Java數(shù)據(jù)結構及算法實例:樸素字符匹配 Brute Force,本文直接給出實例代碼,代碼中包含詳細注釋,需要的朋友可以參考下
/** 
 * 樸素字符串算法通過兩層循環(huán)來尋找子串, 
 * 好像是一個包含模式的“模板”沿待查文本滑動。 
 * 算法的思想是:從主串S的第pos個字符起與模式串進行比較, 
 * 匹配不成功時,從主串S的第pos+1個字符重新與模式串進行比較。 
 * 如果主串S的長度是n,模式串長度是 m,那么Brute-Force的時間復雜度是o(m*n)。 
 * 最壞情況出現(xiàn)在模式串的子串頻繁出現(xiàn)在主串S中。 
 * 雖然它的時間復雜度為o(m*n),但在一般情況下匹配時間為o(m+n), 
 * 因此在實際中它被大量使用。 
 * 該方法的優(yōu)點是:算法簡單明朗,便于實現(xiàn)記憶。 
 * 該方法的缺點是:進行了回溯,效率不高,而這些回溯都是沒有必要的。 
 * 下面是該算法的Java代碼,找到子串的話,返回子串在父串中第一次出現(xiàn)的位置, 
 * 找不到的話返回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; 
  } 
} 

相關文章

  • 最詳細的Java循環(huán)結構解析之for循環(huán)教程(適合小白)

    最詳細的Java循環(huán)結構解析之for循環(huán)教程(適合小白)

    :循環(huán)結構是指在程序中需要反復執(zhí)行某個功能而設置的一種程序結構,下面這篇文章主要給大家介紹了關于Java循環(huán)結構解析之for循環(huán)的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-09-09
  • Springboot中yml文件不生效原因分析及解決

    Springboot中yml文件不生效原因分析及解決

    這篇文章給大家介紹了Springboot中yml文件不生效原因分析及解決方法,通過圖文給大家講解的非常詳細,對大家解決問題有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Spring計劃任務用法實例詳解

    Spring計劃任務用法實例詳解

    這篇文章主要介紹了Spring計劃任務用法,結合實例形式詳細分析了spring計劃任務相關原理、配置、使用方法及操作注意事項,需要的朋友可以參考下
    2019-11-11
  • Java多線程中Callable和Future的解讀

    Java多線程中Callable和Future的解讀

    這篇文章主要介紹了Java多線程中Callable和Future的解讀,Callable接口類似于Runnable,從名字就可以看出來了,但是Runnable不會返回結果,并且無法拋出返回結果的異常,而Callable功能更強大一些,被線程執(zhí)行后,可以返回值,這個返回值可以被Future拿到,需要的朋友可以參考下
    2023-09-09
  • Java一個簡單的紅包生成算法

    Java一個簡單的紅包生成算法

    今天小編就為大家分享一篇關于Java一個簡單的紅包生成算法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 以Spring Boot的方式顯示圖片或下載文件到瀏覽器的示例代碼

    以Spring Boot的方式顯示圖片或下載文件到瀏覽器的示例代碼

    這篇文章主要介紹了以Spring Boot的方式顯示圖片或下載文件到瀏覽器的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • SpringCloud Eureka自我保護機制原理解析

    SpringCloud Eureka自我保護機制原理解析

    這篇文章主要介紹了SpringCloud Eureka自我保護機制原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • vue+springboot+shiro+jwt實現(xiàn)登錄功能

    vue+springboot+shiro+jwt實現(xiàn)登錄功能

    這篇文章主要介紹了vue+springboot+shiro+jwt實現(xiàn)登錄功能,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • 帶你了解Java數(shù)據(jù)結構和算法之高級排序

    帶你了解Java數(shù)據(jù)結構和算法之高級排序

    這篇文章主要為大家介紹了Java數(shù)據(jù)結構和算法之高級排序,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • SpringMVC中重定向model值的獲取方式

    SpringMVC中重定向model值的獲取方式

    這篇文章主要介紹了SpringMVC中重定向model值的獲取方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論