leetcode第15题----- Implement strStr()

本文介绍了一种实现strStr()函数的方法,该函数用于查找一个字符串(needle)在另一个字符串(haystack)中首次出现的位置。若找到则返回该位置的索引,否则返回-1。文中提供了一个C++代码示例,通过双重循环来比较两个字符串。

题目:

Implement strStr().

Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

Example 1:

Input: haystack = "hello", needle = "ll"
Output: 2

Example 2:

Input: haystack = "aaaaa", needle = "bba"
Output: -1

解题思路:我们需要一个比较的函数,将needle中的字符串与输入字符串中的子序列进行一一匹配,如果成功,则返回触发这个函数的位置。然后我们还需要一个触发比较的函数,一旦在输入字符串中发现当前位置的字符与needle中的第一个字符匹配,则触发比较。


代码如下:


class Solution {
public:
    int strStr(string haystack, string needle) {
        bool isFailed = 0;
       for (int i = 0 ; i < haystack.length(); i++) {
           isFailed = 0;
           if (haystack[i] == needle[0]) {
               for (int k = 0; k < needle.length(); k++) {
                   if (haystack[i+k] != needle[k] || i+k>= haystack.length()) {
                       isFailed = 1;
                       break;
                   }
               }
               if (isFailed == 0)
                   return i;
           }
       } 
        if (needle.length() == 0)
            return 0;
        return -1;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值