函数的原型为:
int diff_str(const char a, const char b);
主要是用来处理当A和B 中存在有符号点 “.” 或星号 “*”时的判断关系。
星号出现的(位置不定),且 (不限制长度) 匹配 [a-z0-9] 中包含的字符。
注意: 星号不能匹配 "."
例如:
a=“hello*world”;
b=“hello.world”;
这个时候 a != b;
a=“hello*world”;
b=“hellower9world”;
这个时候 a == b;
a="*";
b="adfafdafd";
这个时候 a == b;
最好再加个判断如果 输入 的a 非 [a-z0-9.] 直接返回。
要求性能高效。
思路我有,关键是求一个效率高的算法。求代码:
int n=0, d=0;
for (p1 = a, p2= a + strlen(a) - 1; p2 > p1; ++p1, --p2){
if (p1 == ''){
if (!strncmp(a, b, n)){
d=1;
}
break;
} else if (p2 ==''){
if (!strncmp(a, b,strlen(a)-n-1)){
d=1;
}
break;
}
n++;
}
定位"*" 号位置我只知道这样两边查找。
求更高效的。
思路如下:
1) 找到 A 中星号的位置,按此位置将 A 分成两部分;
2)按 1) 中的两部分的长度,分别从 B 的开始与结束进行比较;
3)如果相等,再对 B 中间剩余的部分进行判断;如果不相等,则完成;
4)B中间部分,先按是否是 . 进行;再进行其它想要的判断。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。