字符串中第一次出现的字符
2016-03-27 09:25
225 查看
题目:在字符串中查找出第一个只出现一次的字符。如输入"abaccdeff",则输出b所在的下标。 方法一:时间复杂度为o(n*n)。遍历字符串中的每个字符,然后用该字符在字符串中进行查找,如果没有找到和当前字符相同的字符。则当前字符为第一个 只出现一次的字符。
int firstNotRepeatingChar(string str) { if (str.empty()) return -1; int pos = -1; for (int i = 0; i < str.size(); ++i) { bool flag = true; for (int j = 0; j < str.size(); ++j) { if (str[i] == str[j] && i != j) { flag = false; break; } } if (flag) { pos = i; break; } } return pos; }方法二:时间复杂度为o(n)。用一个辅助数组来做hash映射。第一次扫描时,更新在辅助数组中当前字符出现的次数。hash查找的时间复杂度为o(1)。第二次扫描时,在辅助数组中找出当前字符出现一次的位置。
int findPosString(string str) { //辅助数组,用作hash映射 vector<int> index(256); //第一次遍历 for (int i = 0; i < str.size(); ++i) { index[str[i]]++; } int pos = -1; //第二次遍历 for (int i = 0; i < str.size(); ++i) { if (index[str[i]] == 1) { pos = i; break; } } return pos; }
相关文章推荐
- 删除多余空格
- Sublime Text 2编辑markdown文件
- hadoop2.6.3配置
- QT+QT creator+OpenCV图像灰度化
- hadoop集群安装以及Hive、sqoop的使用
- 通用性能测试过程模型GAME(A)
- 串的三种实现方式
- 业务 加载DB数据到内存的 一些基本原则
- 动手实践 Linux VLAN - 每天5分钟玩转 OpenStack(13)
- 深入理解Java之接口
- Cassandra 2016/00
- spark文档
- 常见的时间复杂度
- jquery appendTo用法
- 机器学习: 贝叶斯决策 1
- windows下Eclipse的Hadoop运行调试环境搭建
- PHPCMSV9 乱解读 之 PHPCMS V9的MVC
- sgu 101 无向图有双重边的欧拉路径
- 第五周项目1-三角形类雏形(2)
- python简单浮点数匹配