实现一个挺高级的字符匹配算法: 给一串很长字符串,要求找到符合要求的字符串,例如目的串:123 1******3***2 ,12*****3 这些都要找出来

来源:互联网 发布:怎么给网络加密 编辑:程序博客网 时间:2024/04/28 07:43
实现一个挺高级的字符匹配算法: 给一串很长字符串,要求找到符合要求的字符串,例如目的串: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字符也是一样的值



0 0
原创粉丝点击