数据结构学习-串(1)
2016-04-07 21:05
423 查看
问题描述:
采用顺序结构存储串,编写一个一个实现串通配符匹配的函数,其中通配符只有’?’,他可以和任意字符匹配,for example:原串:where are you re? 匹配串?re则返回3个匹配。
代码:
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int Pattern_Index(char str[],char substr[]); int main() { char str[100],substr[50]; gets(str); gets(substr); int a=Pattern_Index(str,substr); cout<<a; return 0; } int Pattern_Index(char str[],char substr[]) { int l1=strlen(str),l2=strlen(substr); int i=0,j,num=0; while(i<l1)//当1<l1时循环 { for(j=0;j<l2&&i<l1;j++)//开始比较str与substr { while(substr[j]=='?'&&i<l1)//找到str中与通配符之后的字符相同的字符 { if(str[i]==substr[j+1]||j==l2-1)//当str[i]与通配符之后的字符相同或通配符为substr中最后一个字符 break; else i++; } if(substr[j]!='?')//比较str与substr { if(str[i]!=substr[j]) { i++; break;//执行下一轮比较 } else i++; } } if(j>=l2) num++; } return num; }
运行结果:
最后想说:
编写完一个程序后,要不断地代入极端数据调试,发现错误,然后改进完善。通配符‘?’可以表示任意个数的任意字符。
相关文章推荐
- c语言数据结构(4)
- 链表-Linked List Cycle II(判断一个链表是否有环)
- C语言和数据结构的书单-再次推荐
- 数据结构双向循环链表的C语言实现(插入,查询,删除)
- 【数据结构与算法】LCA
- 顺序结构存储串实现串通配符匹配的算法
- 第17章 二叉树,堆和优先队列(1/3)
- 哈希表处理冲突的方法
- 【动态树】【Link Cut Tree】动态树的理解(入门)
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- 在Hive 中如何使用符合数据结构 maps,array,structs
- 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- 数据结构与算法——二叉查找树类的C++实现
- 6.2 相关数据结构及其创建
- linux内核链表以及list_entry--linux内核数据结构(一)
- 利用Mat数据结构打开摄像头
- 深入学习STL第二级配置器
- SGI特殊的空间配置器 std::alloc
- STL六大组件
- 关联式容器set和map原理