大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。

题目考察的知识点

字符串处理,字符串匹配。

题目解答方法的文字分析

我们需要在给定的一串信息 message 中查找关键词 keyword 的起始位置下标。如果关键词不存在于信息中,返回 -1。

思路:

  1. 我们可以使用一个循环遍历信息 message,从第一个字符开始逐个检查是否与关键词 keyword 的第一个字符匹配。
  2. 如果匹配成功,我们再继续检查 message 和 keyword 的后续字符是否一一匹配。
  3. 如果匹配成功,说明关键词在信息中找到了,我们返回关键词的起始位置下标。
  4. 如果匹配不成功,我们继续向后遍历 message 直到找到一个可能的起始位置。

举个例子:假设 message = "hello world",keyword = "world"。

  1. 我们从 message 的第一个字符 "h" 开始检查,与关键词 "w" 不匹配,继续向后。
  2. 匹配到 "w",然后检查后续字符,发现匹配了关键词 "world",返回关键词 "world" 的起始位置下标 6。

本题解析所用的编程语言

C++

完整且正确的编程代码

class Solution {
public:
    int findKeyword(string message, string keyword) {
        int m = message.size();
        int n = keyword.size();

        for (int i = 0; i <= m - n; i++) {
            int j = 0;
            while (j < n && message[i + j] == keyword[j]) {
                j++;
            }

            if (j == n) {
                return i; // 找到关键词的起始位置
            }
        }

        return -1; // 关键词不存在于信息中
    }
};

您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!如果有其他问题,随时都可以问我哦!