📄 00061.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 + -