中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

C語言字符串中的Boyer-Moore算法

發布時間:2024-08-30 09:49:46 來源:億速云 閱讀:101 作者:小樊 欄目:編程語言

Boyer-Moore算法是一種高效的字符串匹配算法,它在文本中搜索模式串(pattern)并返回匹配的位置

以下是一個簡單的C語言實現Boyer-Moore算法的示例:

#include<stdio.h>
#include <stdlib.h>
#include<string.h>

// 計算跳躍表
void build_skip_table(const char *pattern, int pattern_len, int skip_table[]) {
    for (int i = 0; i < 256; i++) {
        skip_table[i] = pattern_len;
    }

    for (int i = 0; i< pattern_len - 1; i++) {
        skip_table[(unsigned char)pattern[i]] = pattern_len - i - 1;
    }
}

// Boyer-Moore算法
int boyer_moore_search(const char *text, const char *pattern) {
    int text_len = strlen(text);
    int pattern_len = strlen(pattern);

    if (pattern_len == 0) {
        return 0;
    }

    int skip_table[256];
    build_skip_table(pattern, pattern_len, skip_table);

    int k = pattern_len - 1;
    while (k< text_len) {
        int j = pattern_len - 1;
        while (j >= 0 && text[k] == pattern[j]) {
            k--;
            j--;
        }

        if (j < 0) {
            return k + 1;
        }

        k += skip_table[(unsigned char)text[k]];
    }

    return -1;
}

int main() {
    const char *text = "This is a simple text to search the pattern in.";
    const char *pattern = "pattern";

    int position = boyer_moore_search(text, pattern);
    if (position != -1) {
        printf("Pattern found at position: %d\n", position);
    } else {
        printf("Pattern not found.\n");
    }

    return 0;
}

這個示例中,boyer_moore_search函數接受兩個參數:要搜索的文本和要查找的模式串。build_skip_table函數用于構建跳躍表,它存儲了每個字符在模式串中最后出現的位置。然后,我們遍歷文本并使用跳躍表進行快速匹配。如果找到匹配的位置,函數返回該位置的索引;否則,返回-1。

向AI問一下細節

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

AI

普兰县| 迁安市| 苍南县| 郓城县| 许昌县| 许昌市| 益阳市| 漾濞| 永泰县| 孟连| 仪陇县| 磐石市| 遂川县| 玛曲县| 琼中| 金寨县| 东平县| 江北区| 河津市| 宜黄县| 江都市| 云和县| 灯塔市| 建阳市| 满洲里市| 隆化县| 建水县| 曲水县| 政和县| 馆陶县| 苏尼特右旗| 博湖县| 安宁市| 济南市| 清镇市| 庄河市| 神农架林区| 沁水县| 岱山县| 临沧市| 麦盖提县|