在字符串中查找子串

题目:在字符串中查找子串。给定一个字符串A,要求在一个字符串中查找一个子串B。

#include <iostream>

#include<assert.h>
#include<string.h>
using namespace std;
char * strfind(char *a,char * b)
{
    assert(a!=NULL&&b!=NULL);
    int lena=strlen(a);
    int lenb=strlen(b);
    if(lena<lenb) return NULL;
    int i=0;
    while(i<=lena-lenb)
    {
        int j=0;
        while(j<lenb)
        {
            if(a[i+j]!=b[j])
                break;
            j++;
        }
        if(j==lenb)
            return a+i;
        i++;
    }
    return NULL;
}

char * strfind2(char *a,char * b)
{
    assert(a!=NULL&&b!=NULL);
    int lena=strlen(a);
    int lenb=strlen(b);
    if(lena<lenb) return NULL;
    for(int i=0;i<=lena-lenb;i++)
    {
        int j=0;
        for(;j<lenb;j++)
        {
            if(a[i+j]!=b[j])
                break;
        }
        if(j==lenb)
            return a+i;
    }
    return NULL;
}

int main()
{
    char a[100]="ababcabcacbab";
    char b[100]="abcac";
    cout<<a<<endl;
    cout<<b<<endl;
    cout<<strfind(a,b)<<endl;
    cout<<strfind2(a,b)<<endl;
    return 0;

}

输出结果:

ababcabcacbab
abcac
abcacbab
abcacbab


猜你喜欢

转载自blog.csdn.net/u013069552/article/details/80897377