挑战面试编程:字符串匹配的双重递归式写法

来源:互联网 发布:cpi最新数据 编辑:程序博客网 时间:2024/05/01 05:49

                  挑战面试编程:字符串匹配的双重递归式写法

    字符串的匹配有很高效的KMP、Sunday等算法,可供使用。下面使用的匹配算法本质上是朴素的,但它的双重递归式的写法仍然值得借鉴。

完整示例代码

#include <stdio.h>#include <stdlib.h>#include <string.h>char *SubStrWithR(const char *str, const char *sub){if (str == NULL || sub == NULL)return NULL;int find = isSame(str, sub);if (find)return str;if (*str)return SubStrWithR(str + 1, sub);elsereturn NULL;}int isSame(const char *str, const char *sub){if (*sub == '\0')return 1;return (*str == *sub) && isSame(str + 1, sub + 1);}int main(){char str[] = "tasklist";printf("pattern string: \n");puts(str);char sub[20];printf("Input a substring: ");scanf("%s", sub);while(strcmp(sub, "exit")){char *find = SubStrWithR(str, sub);if (find == NULL)printf("Not found!\n");elseprintf("%p, %s\n", find, find);printf("Input a substring : ");scanf("%s", sub);}return 0;}
运行



所有内容的目录

  • CCPP Blog 目录


2 0
原创粉丝点击