strstr函数

函数字面理解记忆:strstr前面的表示属于<string.h>头文件里面处理字符串的函数;后面的str表示要找到对应的string字符串。

函数的返回值和传入值:char* strstr(char* arr,char* brr );   arr表示被找的字符串首地址,brr表示要在arr中找到brr。如果找到了就返回其第一个字符的地址,如果没有找到就返回NULL空指针。

strstr函数自我实现:

char* my_strstr(char* arr, char* brr) {
    int lenarr = strlen(arr);
    int lenbrr = strlen(brr);                //这里的两行是取两个字符串的长度
    if (lenarr<lenbrr )return NULL;               //这里是保证我们找的字符串要小于被找的字符串
    if (arr == NULL || brr == NULL)return NULL;                //这里是保证两个字符串不是空
    char* line = arr;                       //这里是一个一直往arr后走的指针
    while (lenarr -(line-arr) >= lenbrr) {       //外层函数的判断条件是我们line停留的地方到arr末尾                                                                 的长度要大于或者等于brr的长度。运用到了指针的加减法
        

        if (strncmp(line, brr, lenbrr) == 0)return line;  //这里是以每个line为起始点,用库函数里面                                                                                         的strcmp函数来判断定向长度下两个字符                                                                                         串是否相等,也可以自己写这个函数。
        else {
            line++;         //如果不满足就以下一个字符串为基点通过为下一次外部循环做准备                     
            continue;
        }
    }
    if (arr - line < lenbrr)return NULL;        如果找完了还没有,那么就是没有,返回NULL
    return 0;
}

另外:这个找字符串的算法有更高阶的。我们这个算法的时间复杂度是O(n²),大家可以自行查找KMP算法。比较难理解,作者还没有看,后面会了会补上来这种方法。

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值