28. 实现strStr()

实现 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() 定义相符。

public class Solution {
    public int StrStr(string haystack, string needle) {
       int fstrIndex = 0;
            int index = 0;
            if (needle == "")
            {
                return 0;
            }
            if (haystack.Length < needle.Length)
            {
                return -1;
            }
            if (haystack.Length == needle.Length)
            {
                if (haystack != needle)
                {
                    return -1;
                }
            }
            for (int i = 0; i < haystack.Length; i++)
            {
                if (haystack[i] == needle[fstrIndex])
                {
                    index = i;
                    for (int j = 0; j <needle.Length && index<haystack.Length; j++)
                    {
                        if (haystack[index] != needle[j])
                        {
                            break;
                        }
                        else if (haystack[index]==needle[j] && j == needle.Length -1)
                        {
                            return i;
                        }
                        index++;
                    }
                }
            }
            return -1;
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Lua-原表

    __index元方法 Lua 查找一个表元素时的规则,其实就是如下 3 个步骤:

    祝你万事顺利
  • C#-委托与事件

    委托:是一个类、是一种数据类型 定义语法: 访问修饰符 关键字(delegate) 返回值 标识符(参数列表) 委托的绑定:和委托的返回值一样,参数一样的方...

    祝你万事顺利
  • C#闭包陷阱

    反编译 反编译可以看到在Main中有一个<>c__DisplayClass0_2.i,此变量会在复制后变为赋值时循环的次数加一

    祝你万事顺利
  • Q28 Implement strStr()

    Implement strStr(). Return the index of the first occurrence of needle in haysta...

    echobingo
  • Spring IoC是如何使用BeanWrapper和Java内省结合起来给Bean属性赋值的【享学Spring】

    书写此篇博文的缘由是出自一道面试题:面试题目大概如标题所述。 我个人认为这道面试题问得是非常有水平的,因为它涉及到的知识点既有深度,又有广度,可谓一举两得~~...

    BAT的乌托邦
  • Coding代码托管平台分享!

    Hello大家好,今天龙先森要给大家介绍一款在线Git代码托管平台——Coding.

    BessCroft
  • Leetcode: Generate Parentheses

    题目: Given n pairs of parentheses, write a function to generate all combinatio...

    卡尔曼和玻尔兹曼谁曼
  • Hbase源码系列之BufferedMutator的Demo和源码解析

    一,基本介绍 BufferedMutator主要用来异步批量的将数据写入一个hbase表,就像Htable一样。通过Connection获取一个实例。Map/r...

    Spark学习技巧
  • 数据变换

    常见的数据预处理包括: 数据缺失(Missing), 奇值处理(Outlier), 数据变换(Transformation), 特征选择(Feature Sel...

    史博
  • springboot结合MyBatis中使用foreach

    在pom.xml中自行加入需要的依赖,application.properties的配置如下

    道可道非常道

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动