博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LeetCode 28_字符串_匹配】Implement strStr()
阅读量:6999 次
发布时间:2019-06-27

本文共 1507 字,大约阅读时间需要 5 分钟。

解法一:Brute-force

1 int strStr(string haystack, string needle) 2 { 3     int m = haystack.size(); 4     int n = needle.size(); 5     if (!n)  6         return 0; 7     for (int i = 0; i < m - n + 1; ++i) { 8         int k = i, j = 0; 9         while (j < n) {10             if (needle[j] == haystack[k]) {11                 j++;12                 k++;13             } else {14                 break;15             }16         }17         if (j == n)18             return i;19     }20     return -1;21 }

解法二:KMP

1 vector
GetNext(const string& T) 2 { 3 int len = T.size(); 4 vector
next(len, 0); 5 for (int i = 1, k = 0; i < len;) { 6 if (T[i] == T[k]) 7 next[i++] = ++k; 8 else if (k) 9 k = next[k - 1];10 else11 next[i++] = 0;12 }13 return next;14 }15 16 int strStr(string haystack, string needle)17 {18 int m = haystack.size();19 int n = needle.size();20 if (n == 0)21 return 0;22 23 vector
next = GetNext(needle);24 for (int i = 0, j = 0; i < m;) {25 if (haystack[i] == needle[j]) {26 i++;27 j++;28 }29 if (j == n)30 return i - n;31 if (i < m && haystack[i] != needle[j]) {32 if (j)33 j = next[j - 1];34 else35 i++;36 }37 }38 return -1;39 }

 

转载于:https://www.cnblogs.com/mengwang024/p/4624619.html

你可能感兴趣的文章
clink 让cmd像ubuntu gnome-terminal一样
查看>>
初识Java模板引擎Beetl之简单示例
查看>>
Oracle UNDO表空间的管理
查看>>
canal.deployer-1.1.0版本,当监听到数据库变动时,server端报异常,docker单核引起的问题...
查看>>
JAVA并发编程:干掉 Synchronized
查看>>
JAVA .class 文件防止反编译
查看>>
iOS-<UITabBarControllerDelegate> 代理不执行
查看>>
easyui实现datagrid列标题拖动
查看>>
CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境
查看>>
在Websphere上修改项目的web.xml中的配置后不起作用
查看>>
JAVA 数据计算、取整、+1、四舍五入
查看>>
wshell修改了upload功能,増加显示图片功能
查看>>
ERP中标准成本的差异分析控制
查看>>
linux 中断的上半部和下半部
查看>>
单例模式的七种写法
查看>>
好用到吐血!APP设计利器Sketch
查看>>
Android TensorFlow环境搭建
查看>>
【细品架构1/100】架构之缘起
查看>>
在js中获取后台传出的json数据
查看>>
Drools的JSR94实现形式
查看>>