字符串移位包含问题

来源:互联网 发布:倩女幽魂能用mac电脑吗 编辑:程序博客网 时间:2024/04/28 11:39

在编程之美3.1中,此题解法是用strstr()函数,并且以空间换时间,其实只要用循环遍历即可

其时间复杂度: k < O(n) < k + n, 其中k为查找串的长度,n为数据串的长度,空间复杂度为O(1)。

代码如下

#include<iostream>using namespace std;int findSubStr(char source[], char subStr[], int sLen, int oLen){    if(source == NULL || subStr == NULL || sLen <=0 || oLen <=0)    {        return -1;    }    int isShifting = 0;    for(int i = 0; i < sLen; i++)    {        if(subStr[0] == source[i])        {            isShifting = 1;            int s_index = i + 1;            for(int j = 1; j < oLen; j++)            {                if(source[s_index] == subStr[j])                {                    s_index++;                    if(s_index < sLen)                        continue;                    else                        s_index = 0;                }                else                {                    isShifting = 1;                    i = s_index - 1;                    break;                }            }        }    }    return isShifting;}int main(){    char source[] = "AABCDAACDB";    char subStr[] = "CDBA";    int sLen = strlen(source);    int oLen = strlen(subStr);    if(findSubStr(source,subStr, sLen, oLen) == 1)        cout << "True.." << endl;    else        cout << "False.." << endl;    return 0;}

0 0
原创粉丝点击