栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ 字符串匹配算法sunday算法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ 字符串匹配算法sunday算法

sunday 算法是一种很高效的字符串匹配算法, 其实现也较kmp算法简单很多

class Sunday {
public:
    const string& needle;
    int mp[300];

    Sunday(const string& needle) : needle(needle) {
        fill(mp, mp + 300, -1);
        for (int i = 0; i < needle.size(); i++) {
            mp[needle[i]] = i;
        }
    }
    int advance(char c) {
        int n = mp[c];
        return (int)needle.size() - n;
    }

    void advance(int& i, int &j, char c) {
        i += advance(c);
        j = 0;
    }

    int strstr(const string& target) {
        int i = 0, j = 0;
        while (i + needle.size() < target.size() + 1) {
            if (needle[j] == target[i + j]) {
                if (++j == needle.size()) {
                    return i;
                }
            } else {
                advance(i, j, target[i + needle.size()]);
            }
        }
        return -1;
    }
};

class Solution {
public:
    int strStr(string haystack, string needle) {
        Sunday sun(needle);
        return sun.strstr(haystack);
    }
};

c++ 字符串匹配算法sunday算法
c++ 字符串匹配算法sunday算法
c++ 字符串匹配算法sunday算法
c++ 字符串匹配算法sunday算法
c++ 字符串匹配算法sunday算法
c++ 字符串匹配算法sunday算法
c++ 字符串匹配算法sunday算法
c++ 字符串匹配算法sunday算法
c++ 字符串匹配算法sunday算法
c++ 字符串匹配算法sunday算法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034392.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号