zoukankan      html  css  js  c++  java
  • 找出一个字符串中最长连续相同子串

    题目:找出一个字符串中最长连续相邻子串,比如ababcabc,最长连续字串是abc。

    分析:第一步,首先定义一个指针pStr定位于字串首部,再定义一个指针qStr指向pStr的下一个,然后qStr++找出与*pStr相同的字符;

    第二步,如果找到*qStr==*pStr,则递增两个指针,并计算下相同字符的数目num和这段相同子字符串的index。

    第三步,如果*qStr!=*pStr,则设置num=0。接着转向第一步...

    第四步,定义一个maxNum和一个maxIndex,记录最长子字符串的长度和位置。如果一个新的num>maxNum,则maxNum=num,maxIndex=index。

    #include <iostream>
    using namespace std;

    void FindStr(char* str)
    {
    if(str == NULL)
    return;

    char* pStr = str;
    char* qStr = str+1;
    char* index = str;
    char* maxIndex = str;
    int num = 0;
    int maxNum = 0;

    while(*pStr != '\0')
    {
    while(*qStr != *pStr){
    num
    = 0;
    qStr
    ++;
    }

    while(*qStr == *pStr && *pStr !='\0' && *qStr !='\0')
    {
    num
    ++;
    index
    = pStr;
    qStr
    ++;//千万不要放在if(...)中
    pStr++;
    }

    if(num>=1)
    index
    = index-num+1;
    if(num > maxNum){
    maxNum
    = num;
    maxIndex
    = index;
    }

    // pStr++;
    qStr = pStr+1;
    }

    cout
    << "Result: ";
    for(int i=0;i<maxNum;++i)
    cout
    << *maxIndex++ << ' ';
    cout
    << endl;
    }


    int main()
    {
    char* str = "abcabcdabcd";
    FindStr(str);

    return 0;
    }

      

  • 相关阅读:
    Django_05_模板
    Django_04_视图
    Django_03_后台管理
    Django_02_创建模型
    Django_01_创建图书管理项目
    Djang简介
    day_03比特币转账的运行原理
    day_02比特币的转账机制及其7个名词
    day01_人类社会货币的演变
    Socket问题
  • 原文地址:https://www.cnblogs.com/phoenixzq/p/2181080.html
Copyright © 2011-2022 走看看