您的位置:首页 > 其它

实现一个挺高级的字符匹配算法: 给一串很长字符串,要求找到符合要求的字符串,例如目的串: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字符也是一样的值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: