C、C++面试题:编程实现字符串中字串的查找

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rl529014/article/details/62117916

要求:

编程实现,在主串中,查找字串是否出现,打印出出现的位置,并统计出现的次数。


实现代码:

void FindSubString(char* mainStr, char* subStr)
{
    if(mainStr == NULL)
    {
        qDebug()<<"mainStr NULL";
        return ;
    }
    if(subStr == NULL)
    {
        qDebug()<<"subStr NULL";
        return ;
    }

    const char* mStr = mainStr;
    const char* sStr = subStr;
    qDebug()<<"Main Str:"<<mStr ;
    qDebug()<<"Sub Str:"<<sStr;

    int mainLen = strlen(mStr);
    int subLen = strlen(subStr);
    if(mainLen < subLen)
    {
        qDebug()<<"MainStr Less Than SubStr";
        return ;
    }

    int SubCount = 0; //记录字串在主串中出现的次数

    for(int i = 0 ; i < mainLen ; i++)
    {
        int flags = true;
        if(mStr[i] == sStr[0])
        {
            int temp = i;
            for(int j = 0 ; j < subLen ; ++j)
            {
                if(mStr[++temp] != sStr[j])
                {
                    flags = false;
                }
            }
            if(flags == false)
            {
                SubCount++;
                qDebug()<<"i = " << i;
            }
        }
    }

    qDebug()<<"SubStr Count: "  << SubCount <<endl;
}

运行截图:



解析:

1、参数mainStr为主串,参数subStr为字串。

2、首先需要判断主串和字串是否有效,如果有效,再继续往下进行判断。

3、判断字串的长度是否小于等于主串,字串字串比主串还长,停止往下判断。

4、在满足2和3的前提下,判断子串是否出现在主串中,如果出现,则打印位置,并使用变量SubCount 统计字串在主串中出现的次数。

猜你喜欢

转载自blog.csdn.net/rl529014/article/details/62117916
今日推荐