• LeetCode(28): 实现strStr()


    Easy!

    题目描述:

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

    解题思路:

    这道题让我们在一个字符串中找另一个字符串第一次出现的位置,那我们首先要做一些判断,如果子字符串为空,则返回0,如果子字符串长度大于母字符串长度,则返回-1。

    然后我们开始遍历母字符串,我们并不需要遍历整个母字符串,而是遍历到剩下的长度和子字符串相等的位置即可,这样可以提高运算效率。然后对于每一个字符,我们都遍历一遍子字符串,一个一个字符的对应比较,如果对应位置有不等的,则跳出循环,如果一直都没有跳出循环,则说明子字符串出现了,则返回起始位置即可。

    C++解法:

     1 class Solution {
     2 public:
     3     int strStr(string haystack, string needle) {
     4         if (needle.empty()) return 0;
     5         int m = haystack.size(), n = needle.size();
     6         if (m < n) return -1;
     7         for (int i = 0; i <= m - n; ++i) {
     8             int j = 0;
     9             for (j = 0; j < n; ++j) {
    10                 if (haystack[i + j] != needle[j]) break;
    11             }
    12             if (j == n) return i;
    13         }
    14         return -1;
    15     }
    16 };
  • 相关阅读:
    信号
    序列化数据的两种方式
    ModelForm的使用
    分页模板
    Django中间件进行用户登陆验证
    Flask 笔记一
    pipenv 使用基本命令
    git本地文件 上传 远程仓库
    service "$service" status 返回的状态
    &>/dev/null 的作用
  • 原文地址:https://www.cnblogs.com/ariel-dreamland/p/9134059.html
Copyright © 2020-2023  润新知