`
hcx2013
  • 浏览: 88801 次
社区版块
存档分类
最新评论

Implement strStr()

 
阅读更多

Implement strStr().

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

 

public class Solution {
    public int strStr(String haystack, String needle) {
    	if (haystack.equals(needle) || needle.equals("")) {
    		return 0;
    	}
    	if (haystack == null || needle== null) {
    		return -1;
    	}
    	
    	int si = 0;
    	int mi = 0;
    	int[] next = getNextArray(needle);
    	while (si < haystack.length() && mi < needle.length()) {
    		if (haystack.charAt(si) == needle.charAt(mi)) {
    			si++;
    			mi++;
    		} else if (next[mi] == -1) {
    			si++;
    		} else {
    			mi = next[mi];
    		}
    	}
    	return mi == needle.length() ? si - mi : -1;
    }

	private int[] getNextArray(String needle) {
		// TODO Auto-generated method stub
		if (needle.length() == 1) {
			return new int[]{-1};
		}
		int[] next = new int[needle.length()];
		next[0] = -1;
		next[1] = 0;
		int pos = 2;
		int cn = 0;
		while (pos < next.length) {
			if (needle.charAt(pos-1) == needle.charAt(cn)) {
				next[pos++] = ++cn;
			} else if (cn > 0) {
				cn = next[cn];
			} else {
				next[pos++] = 0;
			}
		}
		return next;
	}
}

 

 

0
1
分享到:
评论

相关推荐

    ImplementstrStr:返回大海捞针中第一次出现的针的索引;如果不属于大海捞针,则返回-1

    在编程领域,`strStr()` 函数是一个常见的字符串搜索功能,它用于在一个字符串("大海捞针")中查找另一个字符串("针")的首次出现位置。在给定的标题和描述中,我们看到的任务是实现这个函数,并且特别指明了使用...

    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

    经典编程题1

    字符串查找(Implement strStr())。 首先,我们来看第一个问题——链表的重排。题目要求将给定的单链表重新排列,使其呈现出交错的顺序。例如,原始链表L0→L1→L2→L3→L4应变为L0→L4→L1→L3→L2。实现这一...

    LeetCode 28. 实现 strStr()

    【实现 strStr() 知识点详解】 在编程领域,字符串操作是常见且重要的任务之一。LeetCode 的第 28 题“实现 strStr()”是一个经典的字符串搜索问题,要求我们在给定的字符串(haystack)中查找另一个字符串(needle...

    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题解(java语言实现).pdf

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

    Leetcode部分解答(126题)

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

    CleanCodeHandbook_v1.0.3

    - Implement strStr()(实现 strStr() 函数) - Reverse Words in a String(字符串中的单词翻转) - String to Integer (atoi)(字符串转换整数) - Longest Substring Without Repeating Characters(无重复...

    获取目标字符串在源字符串第一次出现的下标Demo

    在"ImplementstrStr.java"文件中,可能包含如下示例代码: ```java public class Main { public static void main(String[] args) { String source = "hello world"; String target = "world"; int index = ...

    常见算法题答案及解析

    5. Implement strStr():实现strStr()函数,即在文本中查找模式串的出现,可以使用KMP算法。 6. Reverse Words in a String:给定一个字符串,将其单词反转并保持单词内部顺序不变。 7. Reverse Words in a String ...

    algorithm-essentials-java

    - **ImplementstrStr()** - 描述:实现字符串查找功能,找到模式字符串在文本字符串中的起始位置。 - 关键技术:滑动窗口或KMP算法实现高效匹配。 - **LongestPalindromicSubstring** - 描述:找出给定字符串中的...

    算法刷题笔记leetcode/lintcode

    - Implement strStr(实现strStr函数) - Two Strings Are Anagrams(两个字符串是否为字母异位词) - Compare Strings(比较字符串) - Group Anagrams(字母异位词分组) - Longest Common Substring(最长...

    leetcode java

    - 在字符串中查找子串(Implement strStr())则是一个经典的问题,需要实现字符串查找功能。 **数学(Math)** 数学题目主要考察基本的数学知识和逻辑推理能力。 - "反转整数"(Reverse Integer)涉及到了整数的...

    Leetcode book刷题必备

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

Global site tag (gtag.js) - Google Analytics