Leetcode : eImplement strStr

Leetcode : eImplement strStr

描述

对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。

如果不让你采用正则表达式,你会怎么做呢?

思路:

1、 先排除source为null、target为null的情况

2、 如果target的length为0,则返回0

3、 如果target的length>source的length,则返回-1

4、 定义一个for循环遍历source字符串,循环比对target字符串

4.1、在for循环外部定义一个索引index,用来索引target,每一次循环,只有比对成功,index++;然后比对index和target的length长度,如果相同,则返回下标

4.2、当比对不成功时,index重新赋值为0;需要重新比对一下,source[i]和target[0]

好了,我们跟着思路来实现一下代码

public static int strstr(String source , String target ) {
    if(source == null || target == null ) {
        return -1;
    }

    int m = source.length();
    int n = target.length();

    if(n == 0) {
        return 0;
    }

    if(n > m ) {
        return -1;
    }
    int index = 0;
    for(int i = 0 ; i < m ; i++ ) {
        if( source.charAt(i) == target.charAt(index) ) {
            index++;
            if(index == n) {
                //index多加了一次
                return i - index + 1 ;
            }
        }else {
            index = 0;
            //source[i]需要和target[0]重新比对一下
            if( source.charAt(i) == target.charAt(index) ) {
                index++;
            }
        }
    }
    return -1;
}

补充:

所需知识:

List是有序(有序是指放入地顺序)的collection。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素地整数索引访问元素。

List通常允许有重复的元素;更确切地讲,List通常允许满足e1.equals(e2)的元素对,并且如果List本身允许null元素的话,通常它们允许多个null元素;List只是一个接口

Set是一个不包含重复元素的collection。更确切地讲,set不包含满足e1.equals(e2)的元素对,并且最多包含一个null元素

Set: HashSet(无序的),LinkedHashSet,TreeSet,EnumSet(后三个有序)

知道了这些,这题的答案明显就是A了

以后Leetcode系列的文章都是这种风格了,题+题;对java面试还是比较有用的......

原文地址:https://www.cnblogs.com/qjmnong/p/9142566.html

时间: 2024-11-05 18:28:48

Leetcode : eImplement strStr的相关文章

LeetCode: Implement strStr() [027]

[题目] Implement strStr(). Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack. [题意] 实现库函数strStr(), 功能是在字符串haystack中找出目标串needle第一次出现的索引位 [思路]字符串的匹配,能够用暴力解法,但不推荐.一般使用KMP算法求解. 简要介绍一下KMP的思想: haystack是

[LeetCode] Implement strStr() [18]

题目 Implement strStr(). Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack. 原题链接(点我) 解题思路 字符串匹配这也是个老题了,方法主要有下面4种, 1. 暴利破解法(BF),这个没啥说的,就是一轮一轮的比较,知道遇到相匹配的,这个的时间复杂度为O(n^2). 2. KMP,这应该是字符串匹配领域中最长听说的算

leetcode | Implement strStr() | 实现字符串查找函数

Implement strStr() : https://leetcode.com/problems/implement-strstr/ Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 如:haystack = "bcbcda"; needle = "bcd" 则 return 2 解析:字符串查找函数,

leetcode implement strStr python

#kmp class Solution(object): def strStr(self, haystack, needle): """ :type haystack: str :type needle: str :rtype: int """ if len(haystack) <= 0 and len(needle)<=0: return 0 arrNext=self.getNext(needle) i=0 j=0 intHLen=

LeetCode Implement strStr() 实现strstr()

如题 思路:暴力就行了.1ms的暴力!!!别的牛人写出来的,我学而抄之~ 1 int strStr(char* haystack, char* needle) { 2 if (!haystack || !needle) return -1; 3 for (int i = 0; ; ++i) { 4 for (int j = 0; ; ++j) { 5 if (needle[j] == 0) return i; 6 if (haystack[i + j] == 0) return -1; 7 if

LeetCode Implement strStr()

Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. Update (2014-11-02): The signature of the function had been updated to return the index instead of the pointer. If you still

[Leetcode] implement strStr() (C++)

题目: Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. Update (2014-11-02):The signature of the function had been updated to return the index instead of the pointer. If you st

Leetcode#28Implement 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的位置,需要注意的是字符串可能为""的情况的处理 public class Solution { public int strStr(String haystack, String

leetcode——Implement strStr() 实现字符串匹配函数(AC)

Implement strStr(). Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack. 这个题考查的是KMP算法.先求特征向量,然后再进行匹配,确实能够大大提高效率.code例如以下: class Solution { public: char *strStr(char *haystack, char *needle) { if(