91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java實現基于Boyer-Moore算法的回文串搜索

發布時間:2024-11-11 18:25:43 來源:億速云 閱讀:82 作者:小樊 欄目:編程語言

Boyer-Moore算法是一種高效的字符串搜索算法,它通過預處理模式串來跳過一些不必要的比較

public class BoyerMoorePalindromeSearch {

    public static void main(String[] args) {
        String text = "abccbaabc";
        String pattern = "abc";
        int index = search(text, pattern);
        if (index != -1) {
            System.out.println("Pattern found at index: " + index);
        } else {
            System.out.println("Pattern not found");
        }
    }

    public static int search(String text, String pattern) {
        if (text == null || pattern == null || text.length() < pattern.length()) {
            return -1;
        }

        // 預處理模式串
        int[] badCharacterShift = new int[256];
        preprocess(pattern, badCharacterShift);

        int i = 0; // text的索引
        int j = pattern.length() - 1; // pattern的索引

        while (i <= text.length() - pattern.length()) {
            if (pattern.charAt(j) == text.charAt(i)) {
                if (j == 0) {
                    return i; // 匹配成功
                }
                i++;
                j--;
            } else {
                int shift = badCharacterShift[text.charAt(i)];
                if (shift == 0) {
                    shift = pattern.length() - j;
                }
                i += Math.max(1, shift); // 跳過不需要比較的字符
                j = pattern.length() - 1;
            }
        }

        return -1; // 匹配失敗
    }

    private static void preprocess(String pattern, int[] badCharacterShift) {
        int m = pattern.length();
        for (int i = 0; i < m; i++) {
            badCharacterShift[pattern.charAt(i)] = m - i;
        }
    }
}

這個程序首先定義了一個search方法,該方法接受兩個字符串參數:textpatternpreprocess方法用于預處理模式串,計算每個字符在模式串中最后出現的位置。在search方法中,我們使用雙指針技術從textpattern的開頭開始比較字符。如果字符匹配,我們將指針向前移動;否則,我們根據badCharacterShift數組跳過一些不需要比較的字符。如果在text中找到了pattern,則返回其起始索引;否則,返回-1。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广德县| 彝良县| 湄潭县| 杂多县| 民县| 绥滨县| 黄大仙区| 启东市| 崇明县| 伊金霍洛旗| 兴城市| 平邑县| 乌拉特中旗| 昭苏县| 临邑县| 大埔区| 宜城市| 昌宁县| 驻马店市| 江陵县| 内江市| 高清| 营口市| 遂溪县| 邛崃市| 祥云县| 琼结县| 北流市| 洛宁县| 庐江县| 霞浦县| 丹阳市| 酉阳| 德阳市| 龙山县| 大姚县| 普安县| 内乡县| 平遥县| 绿春县| 长治县|