挑战面试编程:字符串匹配的双重递归式写法
来源:互联网 发布: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
- 挑战面试编程:字符串匹配的双重递归式写法
- 挑战面试编程:字符串包含
- 挑战面试编程:字符串替换
- 挑战面试编程:字符串转换为整数
- 挑战面试编程:左移字符串
- 字符串匹配正则表达式的写法
- 挑战编程:字符串的完美度
- 编程挑战:字符串的完美度
- 挑战编程:回文字符串
- 挑战面试编程:计算整数二进制位中1的个数
- 挑战面试编程:链表逆转的多种实现
- 挑战面试编程:大整数的加、减、乘、除
- 面试系列:字符串匹配
- 面试:字符串: 正则匹配
- cf559B字符串的最小表示法和递归的写法
- 字符串逆置递归写法。
- 字符串的完美度(pongo的编程挑战..)
- [编程挑战]交替字符串,仅供参考
- ios layer的一些学习
- 参数错误。 (异常来自 HRESULT:0x80070057 (E_INVALIDARG))
- 转自汇编网: 高三老师给大一学生的一封信(感动!)
- 第五九八章 全息头盔出问题了
- css实用布局口诀
- 挑战面试编程:字符串匹配的双重递归式写法
- hdu 2830 (not) dp
- JavaScript 作用域分析
- Android listview与adapter用法
- maven 引用本地的 jar 文件
- 设计模式之中介者模式
- C++ Interview Question test-3 question-4
- PAT1016. Phone Bills
- <link rel="stylesheet" type="text/css" href="css/index.css">是啥意思?