【算法和数据结构】_10_小算法

 /*

*/

//******************************************************0
/*
函数功能:
    判断字符串subString是否是字符串String从首字符开始的子串
函数原型:
    BOOL SubStringMatchHead(char* String,char* subString)
函数参数:
    char* String:字符串
    char* subString:子字符串
返回值:
    如果是,则返回TRUE,否则返回FALSE
异常:
    无
*/
BOOL SubStringMatchHead(char* String,char* subString)
{
    int i;
    
    if(!String || !subString || strlen(String)<strlen(subString))
        return FALSE;

    i=0;
    while(i<strlen(subString))
    {
        if(String[i]-subString[i])
            return FALSE;
        ++i;
    }
    return TRUE;
}
//******************************************************0








//******************************************************0
/*
函数功能:
     这个函数用来求一个字符串
函数原型:
     int GetMaxSubStringLen(const char* string)
函数参数:
    const char* String:字符串
返回值:
    如果有的话则返回最大长度,否则就返回-1
异常:
    无
*/
int GetMaxSubStringLen(const char* string)
{
    int i,
        MaxMatch;

    if(!string || !string[0])
        return -1;

    MaxMatch=0;
    i=1;

    while(i < (strlen(string)-1) )
    {
        //从后往前取子串,判断子串是否与字符串从头开始匹配
        if(SubStringMatchHead(string,&string[strlen(string)-i]))
        {
            if(i>MaxMatch)
                MaxMatch=i;
        }
        ++i;
    }
    
    return MaxMatch;
}
//******************************************************1

 

【2】strpbrk

/*
    本程序实现库函数strpbrk();的功能

    create date:2013-08-07
    author:volcanol
*/

#include <stdio.h>

int strpbrk(char str[],char partner[]);

int main(int argc,char* argv[])
{
    char test[]="gjioehgoifsajflksdhjgiorewufodjs";
    char partner[]="oj";


    printf("%d",strpbrk(test,partner));
    

    getc(stdin);
    return 0;
}

int strpbrk(char str[],char partner[])
{
    int i,
        j;

    for(i=0;partner[i]!='\0';++i)
        for(j=0;str[j]!='\0';++j)
            if(!(str[j] ^ partner[i]))
                return j+1;
    return -1;
}

 

你可能感兴趣的:(数据结构)