`
huntfor
  • 浏览: 201262 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[leetcode]Implement strStr()

阅读更多

http://oj.leetcode.com/problems/implement-strstr/

 

Implement strStr().

Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack.

 大海捞针,很贴切,好吧,我用暴力居然直接过了,羞愧....

JDK源码中有实现,就不罗嗦了,下午研究了一下KMP算法(O(M + N)),很不错的算法,明天好好整理一下,重新写一遍,并写一篇关于KMP算法的博文吧。

暴力——O(m*n)代码如下:

    public String strStr(String haystack, String needle) {
		if(needle == null || needle.length() == 0 || haystack == null){
			return haystack;
		}
		int hayStackLen = haystack.length();
		int needleLen = needle.length(); 
		if(hayStackLen < needleLen || (hayStackLen == needleLen && !haystack.equals(needle))){
			return null;
		}
		char first = needle.charAt(0);
		int max = hayStackLen - needleLen + 1;
		for(int i = 0; i < max; i++){
			if(haystack.charAt(i) != first){
				while(++i < max && haystack.charAt(i) != first);
			}
			if(i < max){
				int j = i + 1;
				int end = j + needleLen - 1;
				for(int k = 1; j < end && needle.charAt(k) == haystack.charAt(j); j++,k++);
				if(j == end){
					return haystack.substring(i);
				}
			}
		}
		return null;
	}

 

 

分享到:
评论

相关推荐

    c语言-leetcode 0028-implement-strstr.zip

    c c语言_leetcode 0028_implement_strstr.zip

    C语言-leetcode题解之28-implement-strstr.c

    c语言入门 C语言_leetcode题解之28-implement-strstr.c

    js-leetcode题解之28-implement-strStr().js

    js js_leetcode题解之28-implement-strStr().js

    LeetCode 28. 实现 strStr()

    LeetCode 的第 28 题“实现 strStr()”是一个经典的字符串搜索问题,要求我们在给定的字符串(haystack)中查找另一个字符串(needle)首次出现的位置。如果找不到,返回 -1。这个题目旨在考察对字符串处理的理解和...

    leetcode信封-LeetCode:LeetCode解题

    ImplementstrStr.java //28. Implement strStr() │ LongestIncreasingSubsequence.java 300.Longest Increasing Subsequence | LongestPalindromicSubstring.java 5. Longest Palindromic Substring │ RansomNote...

    LeetCode 刷题汇总1

    * 实现strStr()(Implement strStr()):实现字符串搜索算法。 7. 排序和搜索: * 合并两个排序列表(Merge Two Sorted Lists):合并两个排序列表。 * 搜索插入位置(Search Insert Position):在排序数组中...

    leetcode跳动问题-Implement-strStr:实现strStr()。返回`haystack`中第一次出现`needle`的索引,

    leetcode跳动问题实现 strStr() 实现strStr() 。 返回 haystack 中第一次出现 Needle 的索引,如果needle不是haystack一部分,则返回-1 。 澄清: 当needle为空字符串时,我们应该返回什么? 这是面试时要问的一个很...

    LeetCode题解(java语言实现).pdf

    * Implement strStr():该题目要求实现字符串查找算法,实现方法使用了Knuth-Morris-Pratt算法。 四、搜索和排序 * Search Insert Position:该题目要求在排序数组中查找元素,实现方法使用了二分查找算法。 * ...

    LeetCode最全代码

    # [LeetCode](https://leetcode.com/problemset/algorithms/) ![Language](https://img.shields.io/badge/language-Python%20%2F%20C++%2011-orange.svg) [![License]...

    Leetcode部分解答(126题)

    7. **Implement strStr().cpp** - 第28题,实现字符串查找功能,即在一个字符串中查找另一个字符串首次出现的位置。可以使用KMP算法或其他字符串匹配算法来解决。 8. **N-Queens(better,backtracking).cpp** - 另一...

    Leetcode扑克-leetcode:Leetcode算法实践

    Leetcode扑克 Leetcode Starting from 2020/08/02 Leetcode practice with Python ...Implement strStr() 实现 strStr() String / 字符串 循环遍历即可 algorithm-pattern: quick start 43 Multiply S

    Leetcode book刷题必备

    5. Implement strStr():实现字符串查找功能,返回子字符串在字符串中的起始索引。 6. Reverse Words in a String:翻转字符串中的单词顺序。 7. Reverse Words in a String II:翻转字符串中的单词顺序,并且整个...

    lrucacheleetcode-leetcode:leetcode

    lru缓存leetcode leetcode 1. Two Sum 2. Add Two Numbers 3. Longest Substring Without Repeating Characters 4. Median of Two Sorted Arrays 5. Longest Palindromic Substring ...Implement strStr() 3

    leetcode中国-leetcode:leetcode刷题

    Implement strStr() String to Integer (atoi) addBinary longestPalindrome maximal rectangle :dp问题,较难 largestRectangleArea 求直方图的最大面积,左右两次扫面+剪枝优化 Valid Parentheses 用栈判断括号...

    _leetcode-python.pdf

    - Implement strStr(): 实现字符串的查找功能,类似于C语言中的strstr()函数。 - Divide Two Integers: 实现整数除法,不能使用乘法、除法和模运算符。 - Search in Rotated Sorted Array: 在旋转过的排序数组中进行...

    leetcode516-Lcode:代码

    leetcode 516 8/13 - 8/18 周:leetcode#: 409. longestPalindrome ...Implement strStr() 5. Longest Palindromic Substring option: 516. Longest Palindromic Subsequence string replacement strStr II 链接:

    leetcode答案-exercise-book:算法练习记录

    Implement strStr() 解决方法:KMP 2018-08-22 20:05 LeetCode: 57. Insert Interval 解决方法:遍历 LeetCode: 229. Majority Element II 解决方法:Majority Voting算法的变种。但是最终的算法实现形式,很难理解...

    leetcode530-algorithm:算法

    leetcode 530 ** LeetCode 题目更新 ** 用来记录业余时间所做的算法题目,保持对于数据结构的熟悉。 ** Leetcode 题目列表 005 Longest Palindromic Substring ...Implement strStr() 031 Next Permutat

Global site tag (gtag.js) - Google Analytics