C++求字符串第一次只出现一次的字符
2015-06-25 06:10
246 查看
//求字符串中第一次只出现一次的字符。 #include <iostream> #include <string.h> #define _SIZE_ 255 using namespace std; struct Node { int index;//存储下标。 int num;//存储个数。 Node() :index(-1), num(0){} }; char Grial(char *str) { Node node[_SIZE_];//如果只考虑26个字符就不需要这么多空间。 int slen = strlen(str); int i = 0; int mix = 0x7fffffff; for (; i < slen; i++) { node[str[i]].index = i;//下标保存。 node[str[i]].num++;//保存个数。 } for (i = 0; i < _SIZE_; i++) { if (node[i].num == 1) { mix = mix>node[i].index ? node[i].index : mix; //求出第一次只出现一次的下标。 } } return str[mix]; //总共的时间复杂度是n(遍历的一遍)+m(总共出现一次的总个数)。 //空间复杂度,开辟了一组额外的节点空间来存储数据。 } int main() { char *p = "1222345678234543"; cout<<Grial(p)<<endl; return 0; }
相关文章推荐
- 字符串操作汇总 C/C++
- 《C++ Templates》(基础部分)笔记整理
- 可嵌套的C语言异常处理机制
- 单链表的c++实现,使用模板
- C语言异常处理——setjmp & longjmp
- 用c语言模拟c++的异常处理机制
- C语言中的异常处理
- C++的内置类型和用户自定义类型的互相转换
- 【Effective c++ 读书笔记】条款01 视 C++ 为一个语言联邦
- C++——try、throw、catch实例学习程序
- C++——windows结构异常转化成C++异常
- C++——STL中三种顺序容器的简要区别
- 【待思考】排序算法——快速排序
- C++——多态性实现机制
- C++ typedef用法小结
- C++杂七杂八
- C/C++——程序的内存分配
- 【学习笔记】【C语言】指针
- [C/C++] const 详解(修饰变量、输入参数、返回值、成员函数)
- 【c++】构造函数调用顺序的研究