欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現字符串匹配的示例代碼

 更新時間:2022年04月25日 09:04:44   作者:CoderDreams  
這篇文章主要介紹了Java實現字符串匹配,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

java實現字符串匹配

暴力匹配

/**
 * 暴力匹配
 *
 * @param str1 需要找的總字符串
 * @param str2 需要找到的字符串
 * @return 找到的字符串的下標
 */
private static int violence(String str1, String str2) {
    char[] s1 = str1.toCharArray();
    char[] s2 = str2.toCharArray();
    int s1Len = s1.length;
    int s2Len = s2.length;

    // 指針,分別指向兩個字符串
    int i = 0;
    int j = 0;
    // 保證匹配時不越界
    while (i < s1Len && j < s2Len) {
        // 第一個字符匹配上了
        if (s1[i] == s2[j]) {
            ++i;
            ++j;
        } else {
            i -= (j - 1);
            j = 0;
        }
    }
    // 判斷是否成功
    if (j == s2Len) {
        return i - j;
    } else {
        return -1;
}

KMP算法

/**
 * KMP算法
 *
 * @param str1 源字符串
 * @param str2 子串
 * @param next 匹配值表
 * @return 對應下標,沒有為-1
 */
private static int kmp(String str1, String str2, int[] next) {
    for (int i = 0, j = 0; i < str1.length(); ++i) {

        while (j > 0 && str1.charAt(i) != str2.charAt(j)) {
            j = next[j - 1];
        }
        if (str1.charAt(i) == str2.charAt(j)) {
            j++;
        if (j == str2.length()) {
            return i - j + 1;
    }
    return -1;
}
 * @return dest的部分匹配表
private static int[] getkmpNext(String dest) {
    int length = dest.length();
    int[] next = new int[length];
    next[0] = 0;
    for (int i = 1, j = 0; i < length; i++) {
        while (j > 0 && dest.charAt(i) != dest.charAt(j)) {
        if (dest.charAt(i) == dest.charAt(j)) {
        next[i] = j;
    return next;

到此這篇關于Java實現字符串匹配的文章就介紹到這了,更多相關java字符串匹配內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringMVC中的DispatcherServlet結構和初始化詳解

    SpringMVC中的DispatcherServlet結構和初始化詳解

    這篇文章主要介紹了SpringMVC中的DispatcherServlet結構和初始化詳解,SpringMVC中Spring容器的關系是通過監(jiān)聽方式啟動的,那么Spring與Servlet的Web容器(如:Tomcat、jetty)的關系則是通過DispatcherServlet進行關聯,需要的朋友可以參考下
    2024-01-01
  • java右下角彈窗示例分享

    java右下角彈窗示例分享

    這篇文章主要介紹了java右下角彈窗示例,需要的朋友可以參考下
    2014-04-04
  • 淺談Spring Cloud zuul http請求轉發(fā)原理

    淺談Spring Cloud zuul http請求轉發(fā)原理

    這篇文章主要介紹了淺談Spring Cloud zuul http請求轉發(fā)原理,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • 使用Spring的攔截器監(jiān)測每個Controller或方法的執(zhí)行時長

    使用Spring的攔截器監(jiān)測每個Controller或方法的執(zhí)行時長

    這篇文章主要介紹了使用Spring的攔截器監(jiān)測每個Controller或方法的執(zhí)行時長,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • JAVA線程sleep()和wait()詳解及實例

    JAVA線程sleep()和wait()詳解及實例

    這篇文章主要介紹了JAVA線程sleep()和wait()詳解及實例的相關資料,探討一下sleep()和wait()方法的區(qū)別和實現機制,需要的朋友可以參考下
    2017-05-05
  • 詳解Mybatis攔截器安全加解密MySQL數據實戰(zhàn)

    詳解Mybatis攔截器安全加解密MySQL數據實戰(zhàn)

    本文主要介紹了Mybatis攔截器安全加解密MySQL數據實戰(zhàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • java實現單鏈表倒轉的方法

    java實現單鏈表倒轉的方法

    這篇文章主要為大家詳細介紹了java實現單鏈表倒轉的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • java與js代碼互調示例代碼

    java與js代碼互調示例代碼

    用到java和js方法互調,在用HTML5做跨平臺應用開發(fā)時經常會用到,在這里分享一些自己在實際開發(fā)過程中的用法,希望對初學者有所幫助
    2013-07-07
  • HashMap鏈表與紅黑樹轉換詳解

    HashMap鏈表與紅黑樹轉換詳解

    這篇文章主要介紹了HashMap鏈表與紅黑樹轉換詳解,HashMap是Java中的一種數據結構,它實現了Map接口,提供了鍵值對的存儲和檢索功能,它基于哈希表的原理,通過將鍵映射到哈希表中的位置來存儲和獲取值,從而實現了快速的查找和插入操作,需要的朋友可以參考下
    2023-11-11
  • IDEA Maven 配置備忘筆記

    IDEA Maven 配置備忘筆記

    這篇文章主要介紹了IDEA Maven 配置備忘筆記,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09

最新評論