• 题目:实现strstr函数。
  • 这个函数原型 strstr(char *a, char *b),在a中是否包含b这个字符串,包含返回第一个子串的位置,否则返回NULL。
  • 思路:其实这个就是找子串的问题。特殊情况,当b为空的时候,直接返回a;当b不为空的时候,指定start指针,通过两次循环,逐一对strstr中的子串和b进行匹配,如果b走到末尾,表示找到,start指针指向开始位置,否则start继续往前,

    例子:abcdefg    bcd  
            start指向a的位置,  将abcdefg和bcd比较   ->否
            start前进,指向b的位置,  将bcdefg和bcd比较  -> 是   返回start指针。

  • 代码
    class Solution {
    public:
        char *strStr(char *haystack, char *needle) {
            if (!*needle)
                return haystack;
            char *start = haystack;
            char *temp1 = haystack, *temp2 = needle;
            while (*start){
                temp1 = start;
                temp2 = needle;
                while (*temp2 && temp1 && !(*temp2 - *temp1))
                    temp2++, temp1++;
                if (!*temp2)
                    return start;
                start++;
            }
            return NULL;
        }
    };

     

相关文章:

  • 2021-07-28
  • 2021-08-09
  • 2022-12-23
  • 2022-02-22
  • 2021-05-15
  • 2022-12-23
  • 2021-05-25
  • 2022-12-23
猜你喜欢
  • 2021-11-21
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-10
  • 2021-11-17
相关资源
相似解决方案