开发者社区> 问答> 正文

求 linux 标准 C 语言判断2个字符串的一个函数

函数的原型为:
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++;
}
定位"*" 号位置我只知道这样两边查找。
求更高效的。

展开
收起
a123456678 2016-03-20 13:58:53 2382 0
1 条回答
写回答
取消 提交回答
  • 思路如下:
    1) 找到 A 中星号的位置,按此位置将 A 分成两部分;
    2)按 1) 中的两部分的长度,分别从 B 的开始与结束进行比较;
    3)如果相等,再对 B 中间剩余的部分进行判断;如果不相等,则完成;
    4)B中间部分,先按是否是 . 进行;再进行其它想要的判断。

    2019-07-17 19:09:33
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载