leetcode 28

28. Implement strStr()

Implement strStr().

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

子串匹配问题,KMP忘了个干净~~  费了点劲终于完成了。

个人感觉是比较乱,对边界把握还是不准,提交了很多次才通过。

代码如下:

 1 class Solution {
 2 public:
 3     int strStr(string haystack, string needle) {
 4         if(haystack.length() == 0 || needle.length() == 0 || haystack.length() < needle.length())
 5         {
 6             if(haystack.length() == 0 && needle.length() == 0)
 7             {
 8                 return 0;
 9             }
10             if(haystack.length() != 0 && needle.length() == 0)
11             {
12                 return 0;
13             }
14             return -1;
15         }
16         int n = haystack.length();
17         int m = needle.length();
18         int index = 0;
19         int j=0;
20         for(int i=0; i<n; i++)
21         {
22              if(haystack[i] == needle[j])
23              {
24                  j++;
25                  index = i;
26                  if(j == m)
27                  {
28                     return index-m+1;
29                  }
30              }
31              else
32              {
33                  i = i -j;
34                  j=0;
35              }
36
37         }
38         return -1;
39     }
40 };

100%~有点不科学~~~~

时间: 2024-10-13 07:22:32

leetcode 28的相关文章

LeetCode 28 Divide Two Integers

Divide two integers without using multiplication, division and mod operator. 思路:1.先将被除数和除数转化为long的非负数,注意一定要为long,因为Integer.MIN_VALUE的绝对值超出了Integer的范围. 2.常理:任何正整数num都可以表示为num=2^a+2^b+2^c+...+2^n,故可以采用2^a+2^b+2^c+...+2^n来表示商,即dividend=divisor*(2^a+2^b+

前端与算法 leetcode 28.实现 strStr()

# 前端与算法 leetcode 28.实现 strStr() 题目描述 28.移除元素 概要 这道题的意义是实现一个api,不是调api,尽管很多时候api的速度比我们写的快(今天这个我们可以做到和indexOf一样快),但我们还是要去了解api内实现的原理,在我们所熟悉的v8引擎中,indexOf使用了kmp和bm两种算法,在主串长度小于7时使用kmp,大于7的时候使用bm,bf咱就不说了哈,那个其实就是爆破算法, 提示 数据结构,kmp,bm 解析 kmp算法的核心其实就是动态规划,明确了

LeetCode 28. Implement strStr()

https://leetcode.com/problems/implement-strstr/ Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 字符串简单题.一定要写的没BUG. 如果不在函数最后一行写return语句的话,LeetCode会出RUNTIME ERROR. Line 27: co

44. leetcode 28. Implement strStr()

28. Implement strStr() Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 思路:子串匹配,朴素匹配.

leetCode 28. Implement strStr() 字符串

28. Implement strStr() Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 在haystack中找与needle 第一个相匹配的位置.如果找不到,返回-1. 代码如下: class Solution { public:     int strStr(string haystac

LeetCode(28)题解:Implement strStr()

https://leetcode.com/problems/implement-strstr/ 题目: Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 思路: 判断一个string是否另一个string的子序列并返回位置. naive法:遍历查找,复杂度O(mn). advance法还有Rabi

19.1.30 [LeetCode 28] Implement strStr()

Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. Example 1: Input: haystack = "hello", needle = "ll" Output: 2 Example 2: Input: haystack = "aaaaa",

&lt;每日 1 OJ&gt; -LeetCode 28. 实现 strStr()

题目: 实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返回  -1. 示例 1: 输入: haystack = "hello", needle = "ll"输出: 2示例 2: 输入: haystack = "aaaaa", needle = "bba"输出: -1说明: 当 

[LeetCode] 28. Implement strStr() ☆

Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 解法: 这道题让我们在一个字符串中找另一个字符串第一次出现的位置,那我们首先要做一些判断,如果子字符串为空,则返回0,如果子字符串长度大于母字符串长度,则返回-1.然后我们开始遍历母字符串,我们并不需要遍历整个母字符串,而是遍历到剩下的长度和子字符