zoukankan      html  css  js  c++  java
  • 字符串搜索(strStr)--- C++版

    上篇中是用JAVA实现的字符串搜索算法, 这次改用C++来实现,当然在C++就没有像JAVA那样方便的API可以很简便的实现了,其思想跟上篇类似,直接上具体实现代码:

    编译运行:

    下面分析下流程:

    还是以这个用例进行分析:

    其中参数str1="abcde",str2="cde":

    ①、,条件为假,继续执行②;

    ②、,条件为假,像这种case实际就是会走这个条件:
      

    ③、,p = str = "abcde";index = 0;其中index表示找到的字串在原字串的位置下标。

    ④、,开始循环进行字串对比,由于字串在C++中会以''结尾,所以可以做为循环条件的终止条件,具体过程如下:
      *p=&'a',字符串还未结束,所以循环条件为真,执行循环体Loop1:

      a、p1 = &'a', p2 = &'c';

      b、循环条件中判断p1所指向的字串是否等于p2指向的字串,并且两者不为空字符,条件为假,则直接退出while循环,执行c;

      c、*p2 == ''条件为假,执行d;

      d、p++,这时p指向下一个字串'b';

      e、index++=1;

      *p=&'b',字符串还未结束,所以循环条件为真,执行循环体Loop2:

      a、p1 = &'b', p2 = &'c';

      b、循环条件中判断p1所指向的字串是否等于p2指向的字串,并且两者不为空字符,条件为假,则直接退出while循环,执行c;

      c、*p2 == ''条件为假,执行d;

      d、p++,这时p指向下一个字串'c';

      e、index++=2;

      *p=&'c',字符串还未结束,所以循环条件为真,执行循环体Loop3:

      a、p1 = &'c', p2 = &'c';

      b、循环条件中判断p1所指向的字串是否等于p2指向的字串,并且两者不为空字符,条件为直,则执行循环体Loop1:

        p1++、p2++,这时p1 = &'d'、p2 = &'d';

        

        循环条件中判断p1所指向的字串是否等于p2指向的字串,并且两者不为空字符,条件为直,则执行循环体Loop2:

        p1++、p2++,这时p1 = &'e'、p2 = &'e';

        

        循环条件中判断p1所指向的字串是否等于p2指向的字串,并且两者不为空字符,条件为直,则执行循环体Loop3:

        p1++、p2++,这时p1 = &''、p2 = &'',已经到了字符串结尾处了;

        循环条件中判断p1所指向的字串是否等于p2指向的字串,并且两者不为空字符,条件为假,则直接退出while循环,执行c;

        

      c、*p2 == ''条件为真,执行条件体,将查找到的字串的位置index=2返回,成功找到~

    ⑤、如果没找到则返回-1。

    发现其思路跟JAVA实现的类似,只是形式不一样而已,所以它的时间复杂度也是O(m * n)喽~

  • 相关阅读:
    云计算 备忘录
    python 备忘录
    Linux 备忘录
    appium自动化的一个实例
    appium环境的搭建
    四则运算2单元测试
    四则运算2
    四则运算2程序设计思路
    上课未及时完成的原因
    随机生成30道四则运算题程序设计
  • 原文地址:https://www.cnblogs.com/webor2006/p/7218827.html
Copyright © 2011-2022 走看看