好久没写过博客,写一道今天的笔试题
2016-04-08 00:19
369 查看
要求从str1字符串中找出str2字符串最后一次出现的位置,最简单应该是从后往前找,当时估计有点紧张没多想,结果可想而知,回来自己写了两种实现,从后往前和从前往后,前者简单就不贴代码了,后者突发奇想用了我最不擅长的递归来实现的,略微复杂,可读性较差,不过还是给写出来了,功能还算完善,支持类似ababa,中找aba,aabc中找ab,abcde中找de,后两种其实还算简单,考虑到就行,递归就是为第一种情况服务的...
本文原创,转载请注明出处,谢谢!
#include <stdio.h> int mystr(char *str1, char *str2) { int i=0,j=0,tmp=0,ok = -1; if(str1 == NULL || str2 == NULL) return -1; for(i=0,j=0; str1[i] != '\0'; i++) { if(str1[i] == str2[j]) { if(j == 0) tmp = i; else { if(str2[j+1] == '\0') ok = tmp; if(str2[j] == str2[0]) { tmp = mystr(&str1[i], str2); if(tmp == -1) break; else { ok = i+tmp; break; } } } j++; if(str2[j] == '\0') { ok = tmp; j = 0; } } else { if(j != 0) i = i - j; j = 0; } } return ok; } void main(void) { int i; char *c = NULL; char *d = NULL; char a[20] = {"ababsababababa"}; char b[6] = {"aba"}; i = mystr(a, b); printf("%d\n", i); }欢迎交流.
本文原创,转载请注明出处,谢谢!
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 有关数据库SQL递归查询在不同数据库中的实现方法
- C#中的递归APS和CPS模式详解
- WinForm实现按名称递归查找控件的方法
- 使用SqlServer CTE递归查询处理树、图和层次结构
- C#中的尾递归与Continuation详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结