Implement strStr() 题解

题目描述

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
给定子字符串和母字符串,返回子字符串在母字符串第一次出现的位置,没有出现返回-1

代码及注释

class Solution {
public:
    int strStr(string haystack, string needle) {
        // 如果要求查找的字符串是空值的话,返回0
        if(needle.empty())  return 0;   
        // 子字符串在母字符串里最晚出现是子字符串正好在最后,这个位置定义为N
        const int N = haystack.size() - needle.size() + 1;
        // 从母字符串第一个位置到第N个位置,开始暴力搜索子字符串
        for(int i = 0; i<N; i++){
            //i指针在外部控制母字符串迭代位置,内部需要一个j接收i,防止影响外部变化
            int j = i; 
            // k控制子字符串位置
            int k = 0;
            // 三个停止条件,前两个限制j和k,最后一个等值匹配
            while(j<haystack.size() && k<needle.size() && haystack[j]==needle[k]){
                j++;
                k++;
            }
            // 外部迭代停止条件,当前找到的等值字符串大小恰好等于子字符串
            if(k == needle.size())  return i;
        }
        return -1;   
    }
};

分析

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,349评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,359评论 19 139
  • 大学时候,班里的团支书和别班班长在一起四年,毕业了也找到了同一家公司的工作。当我正嫉妒着他们的时候,他们分手了。 ...
    我叫嘘嘘阅读 3,701评论 0 3
  • 1 烟可真不是个好东西啊喂。 于是上上个礼拜,当杨先生又一次拿起烟盒时,我终于开帮助老爸戒烟的先河了。 2 “你一...
    杨芮_阅读 1,612评论 0 0