【July程序员编程艺术】之现场编写类似strstr/strcpy/strpbrk的函数
2015-10-14 16:48
666 查看
这一节主要是实现一些C库中的库函数,比较简单,只要注意好细节即可。本节我只用C++实现了strstr和findfirst,其他的以后有时间再去实现
#include <iostream> #include <string> using namespace std; int strstr(string & lstr,string & sstr); char findfirst(string & str); int strstr(string & lstr,string & sstr) { char * pointa,* pointb; int la = lstr.length(); int lb=sstr.length(); int j=0,i=0; while(i<la) { if(lstr[i]==sstr[0]) { for(j=1;j<lb;j++) { if((lstr[i+j]!=sstr[j])||(i+j==la)) { i=i+j; break; } } if((j==lb)) return i; } else i++; } return 0; } char findfirst(string & str) { int tmp[256]={0}; int len = str.length(); char f ='a'; for(int i=0;i<len;i++) { tmp[str[i]-'a']++; } for(int i=0;i<256;i++) { if(tmp[i]==1) return f+i; } return '0'; } void main() { string a("ABCD"); string b("CD"); int res = strstr(a,b); cout << res << endl; }
相关文章推荐
- 【扣丁学堂】程序员如何提高工作效率?
- 3-5年的PHPer常见的面试题
- .Net程序员面试 中级篇 (回答Scott Hanselman的问题)
- .Net程序员面试 每个人都应知道篇 (回答Scott Hanselman的问题)
- .Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)
- 黑马程序员——Java基础---面向对象(封装、构造函数)(2)
- C#笔试面试宝典值得收藏1
- C#面试基础问题0
- webservice CXF 客户端调用报错
- 黑马程序员————java反射的简单应用
- 黑马程序员——Java基础语法---关键字、常量、变量、运算符
- 黑马程序员_java多线程
- 指针改变了吗?码农!
- 程序员必读经典书籍
- 优秀程序员的18大法则-兄弟连IT教育
- 一个测试工程师面试结束后想说的
- 黑马程序员-反射机制
- 面试总结hashmap
- 黑马程序员—main(String{} args)你不了解的细节
- J2EE经典面试题及答案