/*
名称编号: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;
}
/***************************************************************************/
没有合适的资源?快使用搜索试试~ 我知道了~
5000例基础.rar
共65个文件
cpp:65个
需积分: 9 3 下载量 191 浏览量
2009-02-07
17:10:24
上传
评论
收藏 35KB RAR 举报
温馨提示
c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言c语言 例子源码 好
资源详情
资源评论
资源推荐
收起资源包目录
5000例基础.rar (65个子文件)
精选5000例基础
00011.cpp 1KB
00008.cpp 2KB
00016.cpp 614B
00013.cpp 577B
00055.cpp 683B
00004.cpp 1KB
00042.cpp 2KB
00052.cpp 522B
00002.cpp 796B
00060.cpp 580B
00032.cpp 646B
00028.cpp 767B
00025.cpp 1KB
00034.cpp 552B
00029.cpp 650B
00035.cpp 622B
00015.cpp 809B
00040.cpp 1KB
00056.cpp 639B
00020.cpp 900B
00046.cpp 511B
00043.cpp 2KB
00039.cpp 693B
00030.cpp 550B
00031.cpp 1KB
00012.cpp 558B
00024.cpp 950B
00026.cpp 666B
00019.cpp 807B
00018.cpp 604B
00027.cpp 2KB
00041.cpp 440B
00005.cpp 682B
00033.cpp 691B
00054.cpp 1KB
00023.cpp 986B
00047.cpp 2KB
00009.cpp 506B
00053.cpp 635B
00017.cpp 721B
00061.cpp 3KB
00049.cpp 458B
00057.cpp 737B
00001.cpp 823B
00064.cpp 1KB
00037.cpp 600B
00051.cpp 423B
00045.cpp 952B
00038.CPP 715B
00063.cpp 521B
00021.cpp 963B
00010.cpp 407B
00036.cpp 588B
00022.cpp 785B
00062.cpp 1KB
00003.cpp 805B
00058.cpp 1KB
00007.cpp 418B
00050.cpp 438B
00044.cpp 564B
00006.cpp 772B
00048.cpp 501B
00014.cpp 758B
00065.cpp 1KB
00059.cpp 1KB
共 65 条
- 1
clc0925
- 粉丝: 66
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术面试最后反问面试官的话 校招面试非技术问题有哪些 非技术问题如何回答.png
- NB-IOT-BC26全网通模块Altium+ CADENCE +PADS三种格式(原理图SCH+PCB封装库)文件.zip
- 基于微信小程序开发的校园失物招领系统源码毕业设计(优质项目源码).zip
- 词向量是一种将自然语言中的单词转换为数值向量的技术,它能够捕捉词义和上下文信息
- nmap与masscan的简单使用
- MyBatis动态SQL.pdf
- 基于stm32单片机protues仿真的温湿度控制系统设计(仿真图、源代码)
- 词向量:自然语言处理的基石
- mybatis动态sql
- 40G微信小程序开发教程(工具插件+视频教程)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0