题目

实现 strStr() 函数。

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。

解法 KMP

构建一个状态转换表.
next数组太难理解了。采用leetcode上labuladong大佬的思路。用更容易的状态转换表来表示。

//KMP
class Solution {public:int strStr(string haystack, string needle) {int s_len = needle.length();int d_len = haystack.length();if(s_len == 0)return 0;if(d_len == 0)return -1;vector<vector<int>> dp(s_len + 1,vector<int> (128,0));dp[0][needle[0]] = 1;int X = 0; //X为影子状态,比i慢一步启动。for(int i = 1; i < s_len ;i++){for(int j = 0; j < 128 ; j++)dp[i][j] = dp[X][j];dp[i][needle[i]] = i + 1;X = dp[X][needle[i]];}int st = 0;for(int i = 0; i < d_len;i++){st = dp[st][haystack[i]];if(st == s_len)return i - s_len + 1;}return -1;}
};

leetcode 28.实现strStr()相关推荐

  1. 【To Do】LeetCode 28. Implement strStr() 和KMP算法

    LeetCode 28. Implement strStr() Solution1:我的答案 有投机取巧之嫌啊~ 注意string中的查找函数在查找时 参考网址:https://www.cnblogs ...

  2. LeetCode - 28. Implement strStr()

    28. Implement strStr() Problem's Link -------------------------------------------------------------- ...

  3. leetCode 28. Implement strStr() 字符串

    28. Implement strStr() Implement strStr(). Returns the index of the first occurrence of needle in ha ...

  4. strstr函数_[LeetCode] 28. 实现strStr()

    题目链接: https://leetcode-cn.com/problems/implement-strstr/ 题目描述 实现 strStr() 函数. 给定一个 haystack 字符串和一个 n ...

  5. LeetCode 28. 实现strStr()

    实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返 ...

  6. [leetcode] 28. Implement strStr() 解题报告

    题目链接:https://leetcode.com/problems/implement-strstr/ Implement strStr(). Returns the index of the fi ...

  7. leetcode 28. Implement strStr() 实现strStr()

    C++代码,题目相对不是很难 1 class Solution { 2 public: 3 int strStr(string haystack, string needle) { 4 if(need ...

  8. LeetCode 28 实现 strStr()

    https://leetcode-cn.com/problems/implement-strstr/ 解决方案 class Solution {public int strStr(String hay ...

  9. Leetcode 28. 实现 strStr()

    原题链接 解:KMP算法 class Solution { public:int strStr(string s, string p) {if (p.empty()) return 0;int n = ...

最新文章

  1. 我对序列化(Serializable)的理解
  2. ValueStack基础:OGNL
  3. python反转一个整数、123变成321_python整数反转算法
  4. SparkSQL-从0到1认识Catalyst
  5. thymeleaf 判断checkbox是否选中_一日看尽长安花——复选框(CheckBox)数据清洗和统计的SAS实现...
  6. C语言int的字节数跟什么有关,C语言中int型字长和什么有关
  7. MediaInfo源代码分析 5:JPEG解析代码分析
  8. python读取中文txt操作 转化为拼音
  9. python 参数带星号_python 函数参数的传递(参数带星号的说明)
  10. PHP查询函数调用堆栈
  11. 热点:安全问题是否能将DNS推入云服务
  12. javax.persistence.TransactionRequiredException: No transactional EntityManager available
  13. Centos7部署kubernetes集群CA证书创建和分发(二)
  14. phpstudy 本地配置url重写
  15. RT-Thread:STM32F407虚拟U盘,无法识别拔出问题解决方案
  16. Libgdx Box2D实战---放开那小球(二:Box2D介绍)
  17. 11 Daemonset:忠实可靠的看门狗
  18. 中关村十大AI研究院|盘点
  19. 源代码转换:Tangible Software Solutions v22.10.20
  20. java 开发微型公众账号应用

热门文章

  1. 二分图最大匹配(匈牙利算法Dinic算法)
  2. DELL服务器iDRAC远控卡设置(详细图解)
  3. 【Katalon Studio】失败用例重跑
  4. FPS 游戏:快速寻找基址的方法
  5. PHP实现在手机上选择完图片直接上传图片
  6. Python书籍阅读与记录 6.10 II 变量和简单数据类型
  7. php 抓取网页数据
  8. 清爽聊天无多余功能!抖音聊天工具上线
  9. word文件转换为html格式,【Word转html】- 虎课网
  10. python webkitformboundary_python 免杀验证