LeetCode--028--实现strStr() (java and python)

 实现 strStr() 函数。

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

示例 1:

输入: haystack = "hello", needle = "ll"
输出: 2

示例 2:

输入: haystack = "aaaaa", needle = "bba"
输出: -1

说明:

当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。

对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。

1 class Solution {
2     public int strStr(String haystack, String needle) {
3         return haystack.indexOf(needle);
4     }
5 } 

 

1 class Solution {
2     public int strStr(String haystack, String needle) {
3         if(needle.length() == 0)return 0;
4         for (int i = 0 ;i <= haystack.length() - needle.length() ;i++){
5             if(haystack.substring(i,i+needle.length()).equals(needle)) return i;
6         }
7         return -1;
8     }
9 } 

 2019-04-22 21:17:59

python

方法1:

暴力模式匹配  O(N*M)

 1 class Solution:
 2     def strStr(self, haystack: str, needle: str) -> int:
 3         i,j = 0,0
 4         while i < len(haystack) and j < len(needle):
 5             if haystack[i]==needle[j]:
 6                 i+=1
 7                 j+=1
 8             else:
 9                 i = i - j + 1
10                 j = 0
11         if j >=len(needle):
12             return i - len(needle)
13         else:
14             return -1

KMP:shaodeng

 

posted @ 2019-04-22 21:18  Assange  阅读(136)  评论(0编辑  收藏  举报