实现一个挺高级的字符匹配算法: 给一串很长字符串,要求找到符合要求的字符串,例如目的串:123 1******3***2 ,12*****3 这些都要找出来
2014-05-13 17:47
776 查看
实现一个挺高级的字符匹配算法: 给一串很长字符串,要求找到符合要求的字符串,例如目的串:123 1******3***2 ,12*****3 这些都要找出来
#include <iostream> using namespace std; bool is_baohan(char *str1 ,char *str2) { int i , j ,k ,len1 ,len2; bool is_b = true; len1 = strlen(str1); len2 = strlen(str2); int count[100] ={0}; for(i = 0 ;i<len1 ;i++) { for(j = 0; j<len2 ;j++) { if(str1[i]==str2[j]) { count[i] = 1; } } } for(i= 0 ;i<len1 ;i++) { if(count[i]!=1) { is_b = false; } } is_b = true; return is_b; } void main() { char *str2="1***2***3***"; char *str1="132"; bool is_b = is_baohan(str1,str2); if(is_b) { cout<<"匹配"; } else { cout<<"不匹配"; } }
方法二:
#include <iostream> using namespace std; bool is_pipei(char *str1 ,char *str2) { bool is_baohan = true; int exist[256]={0}; int len1,len2,i,j; len1 = strlen(str1); len2 = strlen(str2); for(i = 0 ;i<len1 ;i++) { exist[str1[i]] = 1; } for(i = 0 ;i<len2 ;i++) { if(exist[str2[i]] == 0) { is_baohan = false; } } return is_baohan; } void main() { char *str1="1**2**3***"; char *str2="123"; bool is_baohan=is_pipei(str1 ,str2); if(is_baohan) { cout<<"匹配"; } else { cout<<"不匹配"; } }
由于是字符串,字符对应唯一的ASCII码,将字符串1中的字符对应的ASCII码值设置一定的值,如果在字符串2中,字符串的ASCII字符也是一样的值
相关文章推荐
- 线程池原理
- nodejs canvas to base64 and post server write to image
- Mutex
- stm32f10x_map.h(3.1以后不再使用)阅读记录 (对比老版的stm32f10x_map.h和3.5.0版stm32f10x.h)
- Android系统启动过程~~~
- js中setTimeout、setInterval、 clearInterval方法简介
- win7下bugzilla配置
- Set与list测试
- IOS block 块实现简单的页面跳转传值
- 在Win7中修改Tomcat的端口号无法正常保存的解决方法
- MyEclipse2014配置
- 《决定你一生的习惯》经典语录
- SuperSocket学习笔记(二)
- 学习单元测试, 如何在开发过程中把单元测试也做了
- 促销单审核后怎么修改
- 第十二话。还是上周的胖太,还是原来的味道!一指戳掉你二两肥肉
- 处理QMenu的triggered信号时遇到的一个问题
- 10款AJAX/CSS/HTML的在线表单生成器
- 中国电信翼支付网关接口接入
- AVPlayer