⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00061.cpp

📁 通过一些基础的程序
💻 CPP
字号:
/*
名称编号:00001
实现功能:实现在一个字符文本中搜索简单的设定长度的字符串
运行结果:通过
*/
/***************************************************************************/
#include<iostream>
#include<string>
using namespace std;
int  PartPostion(char src[], char partString[], int pos) 
                                                                         //从某一个位置开始定位子串的函数
{
    int i = pos;                                                         //从pos位置开始
    int j = 0;
    int length_src = strlen(src);
    int lenght_partString = strlen(partString);
    while(i < length_src && j < lenght_partString)
    {
        if(src[i] == partString[j])                                       //如果相等则继续
        {
            i++;
            j++;
        }
        else                                                              //否则回溯
        {
            i = i - j + 1;
            j = 0;
        }
    }

    if(j >= lenght_partString)                                             //表示找到并返回
    {
        return i - lenght_partString;
    }
    else
        return -1;
}


int main()
{
    char srcString[] = "egabcrtabcvabcbbbbbabchabc";                          //定义主串
    char partString[] = "abc";                                                //定义子串

    int firstPos = PartPostion(srcString, partString, 6);
    cout<<"字符为"<<srcString<<endl;
    cout<<"第一次出现的位置为:";
    cout<<firstPos<<endl;

    int currentPos = 0;
    int length_src = strlen(srcString);
    int lenght_partString = strlen(partString);
    int i = 0;                                                                  //用于保存出现子串的次数
    int count[10];                                                              //用于保存第i次出现子串的位置
    
    while(currentPos <= length_src)                                             //如果当前位置小于主串的长度
	{
        currentPos = PartPostion(srcString, partString, currentPos);
        if(currentPos < 0)                                                      //主串中不包含子串则跳出循环
        {
            break;
        }
        else                                                                     //记录第i次出现子串的位置
        {
            count[i++] = currentPos;       
        }
        currentPos += lenght_partString;                                         //在主串中滑动子串个字符后继续比较
    }
    cout<<"出现的次数为:"<<i<<endl;
    cout<<"出现的位置分别是:"<<endl;
    for(int k = 0; k < i; k++)                                                     //分别输出出现的位置
        cout<<count[k]<<" ";
    return 0;
}
/***************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -