最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年06月20日 11:02:03   投稿:junjie  
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實例:樸素字符匹配 Brute Force,本文直接給出實例代碼,代碼中包含詳細注釋,需要的朋友可以參考下
/** 
 * 樸素字符串算法通過兩層循環(huán)來尋找子串, 
 * 好像是一個包含模式的“模板”沿待查文本滑動。 
 * 算法的思想是:從主串S的第pos個字符起與模式串進行比較, 
 * 匹配不成功時,從主串S的第pos+1個字符重新與模式串進行比較。 
 * 如果主串S的長度是n,模式串長度是 m,那么Brute-Force的時間復(fù)雜度是o(m*n)。 
 * 最壞情況出現(xiàn)在模式串的子串頻繁出現(xiàn)在主串S中。 
 * 雖然它的時間復(fù)雜度為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; 
  } 
} 

相關(guān)文章

  • Java返回分頁結(jié)果集的封裝代碼實例

    Java返回分頁結(jié)果集的封裝代碼實例

    這篇文章主要介紹了java返回分頁結(jié)果集的封裝代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot框架底層原理解析

    SpringBoot框架底層原理解析

    這篇文章主要介紹了SpringBoot底層原理,包括配置優(yōu)先級的配置方式給大家講解的非常詳細,需要的朋友可以參考下
    2024-03-03
  • java 合并排序算法、冒泡排序算法、選擇排序算法、插入排序算法、快速排序算法的描述

    java 合并排序算法、冒泡排序算法、選擇排序算法、插入排序算法、快速排序算法的描述

    算法是程序設(shè)計的精髓,程序設(shè)計的實質(zhì)就是構(gòu)造解決問題的算法,將其解釋為計算機語言。
    2009-06-06
  • Java中Thread類基本用法詳解

    Java中Thread類基本用法詳解

    Java中的Thread類是用于創(chuàng)建和管理線程的類,Thread類提供了許多方法來管理線程,包括啟動線程、中斷線程、暫停線程等,下面這篇文章主要給大家介紹了關(guān)于Java中Thread類基本用法的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Java使用try-with-resources實現(xiàn)自動解鎖

    Java使用try-with-resources實現(xiàn)自動解鎖

    項目中使用Redission分布式鎖,每次使用都需要顯示的解鎖,很麻煩,Java 提供了 try-with-resources 語法糖,它不僅可以用于自動關(guān)閉流資源,還可以用于實現(xiàn)自動解鎖,本文將介紹如何利用 try-with-resources 實現(xiàn)鎖的自動釋放,需要的朋友可以參考下
    2025-01-01
  • Feign調(diào)用接口解決處理內(nèi)部異常的問題

    Feign調(diào)用接口解決處理內(nèi)部異常的問題

    這篇文章主要介紹了Feign調(diào)用接口解決處理內(nèi)部異常的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • ocp開閉原則_動力節(jié)點Java學(xué)院整理

    ocp開閉原則_動力節(jié)點Java學(xué)院整理

    這篇文章主要為大家詳細介紹了ocp開閉原則的相關(guān)資料,ocp開閉原則指導(dǎo)我們?nèi)绾谓⒁粋€穩(wěn)定的、靈活的系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • springboot2 jackson實現(xiàn)動態(tài)返回類字段方式

    springboot2 jackson實現(xiàn)動態(tài)返回類字段方式

    這篇文章主要介紹了springboot2 jackson實現(xiàn)動態(tài)返回類字段方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot中操作Bean的生命周期的方法總結(jié)

    SpringBoot中操作Bean的生命周期的方法總結(jié)

    在SpringBoot應(yīng)用中,管理和操作Bean的生命周期是一項關(guān)鍵的任務(wù),這不僅涉及到如何創(chuàng)建和銷毀Bean,還包括如何在應(yīng)用的生命周期中對Bean進行精細控制,本文給大家總結(jié)了SpringBoot中操作Bean的生命周期的方法,需要的朋友可以參考下
    2023-12-12
  • Java中的?CyclicBarrier詳解

    Java中的?CyclicBarrier詳解

    這篇文章主要介紹了Java中的?CyclicBarrier詳解,CyclicBarrier沒有顯示繼承哪個父類或者實現(xiàn)哪個父接口,?所有AQS和重入鎖不是通過繼承實現(xiàn)的,而是通過組合實現(xiàn)的,下文相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04

最新評論

法库县| 马龙县| 西藏| 聊城市| 沾化县| 方山县| 阳城县| 和田县| 南开区| 历史| 宜都市| 永吉县| 山阳县| 河东区| 东宁县| 维西| 和平区| 通渭县| 张掖市| 荣昌县| 蓬莱市| 平塘县| 女性| 越西县| 郧西县| 七台河市| 泰州市| 香港| 永福县| 靖安县| 玉山县| 青川县| 邢台市| 辉县市| 岱山县| 米林县| 井陉县| 如东县| 洛浦县| 葫芦岛市| 泰兴市|