此程序是基于“滑动窗口”方式进行的在主字符串中查找含有待查串字符的最短子串的操作,具体操作如下:
1、首先在提示下输入主字符串和待查字符串
2、调用find_str()函数进行查找子串的操作,找到后打印子串内容及窗口大小和窗口左右指针,未找到则返回“未找到模式串”
3、具体具体查找原理如下:
1)初始化左右指针为0,初试化计数器为0
2)右指针向右前进,依次对每个主串中字符元素与待查串中元素进行对比,打印出每次窗口内的子串及窗口大小,左右窗口指针,直到对比成功数为待查串的长度为止,结束右指针前进,进行3),否则查找失败
3)左指针向右前进,每前进一步就进行比较,直到满足包含待查串字符的最小长度
4)最终打印出窗口内的元素(即查找到的最短子串)及窗口大小,左右窗口指针
#include#include using namespace std; bool isinAstr(char *a ,char *b,int l,int r){ ///判断待查串是否在给定的主串的窗口内 int j=0; int n=0; while(b[j]!=' ' && r!=l) { if(a[l] == b[j]){ j++; l++; n++; }else { l++; } if(l==r || n==strlen(b)) break; } if(n == strlen(b)) return true; else return false; } void print_str(char *a ,int l,int r) ///打印出窗口内的元素(主串内找到包含全部的待查串字符的子串) { int i; i = l; cout<<"窗口内字符元素:"< >a; cout<<"请输入待查字符串:"< >b; find_str(a,b); return 0; }
示例一(查找成功窗口变化):
1、输入“qwertyuiopasdf”作为主串
2、输入“eru”作为待查串
3、输出查询的过程(窗口的变化过程)
4、最后输出最终结果“主串中包含待查串中所有字符的最短串”
示例二(查找不成功窗口变化):
1、输入数据
2、查询过程及结果
主串中未找到含有待查串的子串。



