zoukankan      html  css  js  c++  java
  • 刷题-力扣-28. 实现 strStr()

    28. 实现 strStr()

    题目链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/implement-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() 定义相符。
    

    题目分析

    1. 根据题目描述从haystack中返回needle的位置
    2. 使用暴力求解,依次对比haystack和needle中的字符是否相等
    3. 此题应该使用KMP算法

    代码

    class Solution {
    public:
        int strStr(string haystack, string needle) {
            if(needle.length() == 0) return 0;
            if(haystack.length() == 0) return -1;
            if (haystack.length() < needle.length()) return -1;
            for(int i = 0; i <= (haystack.length() - needle.length()); i++) {
                int haystackIndex = i;
                int needleIndex = 0;
                while(haystackIndex < haystack.length() && needleIndex < needle.length()){
                    if (haystack[haystackIndex] != needle[needleIndex]) break;
                    haystackIndex++;
                    needleIndex++;          
                }
                if(needleIndex == needle.length()) return i;
            }
            return -1;
        }
    };
    
  • 相关阅读:
    java多线程
    异常处理
    mabits
    梦想改造家之全世界最治愈的家浅析
    Activity
    java基础终稿
    Visual Studio Codes配置vs2017编译
    2017-2018-2 20179216 《网络攻防与实践》SM234算法
    2017-2018-2 20179216 《网络攻防与实践》 免杀技术
    2017-2018-2 20179216 《网络攻防与实践》 SQL注入攻击
  • 原文地址:https://www.cnblogs.com/HanYG/p/14426940.html
Copyright © 2011-2022 走看看