《剑指offer》-第一个只出现一次的字符位置
2016-06-09 10:34
246 查看
题目描述
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始解法:1.使用哈希表,键为每一个字母(256个值表示),值为出现的次数
2.两次遍历,第一次统计出现的次数,第二次判断出现次数为1的字母
3.字符串转到字符的使用c_str()
class Solution {
public:
int FirstNotRepeatingChar(string str) {
if(str.length() == 0) return -1; //如果为空,则返回-1
//使用哈希表,字符对应成键,及数组的下标,值里面存储出现的次数
const int num = 256; //256个字符对应
unsigned int hashMap[num];
int index = 0;
for(int i = 0; i < num; i++) //初始化每个出现次数为0
hashMap[i] = 0;
const char *p = str.c_str(); //返回字符串中的第一个字符位置的指针
while(*p != '\0') {
hashMap[*p]++; //每出现一次就加1
p++; //指向下一个字符位置
}
p = str.c_str(); //重新第二轮扫描开始
while(*p != '\0') {
if(hashMap[*p] == 1)
return index;
++index;
p++;
}
return -1;
}
};
相关文章推荐
- JS实现星星评分功能实例代码(两种方法)
- js Map
- js获取元素下的第一级子元素
- 新闻切换特效
- JavaScript基础总结
- Node.js中npm常用命令大全
- React Native运行官方例子----组件集合
- jQuery EasyUI框架中的Datagrid数据表格组件结构详解
- PS切片高级教程
- CSS3基础总结
- JS 通过系统时间限定动态添加 select option的实例代码
- safari 浏览器不支持input 样式
- 【转帖】jquery DataTables中文使用说明
- JavaScript Array 方法总结
- 粗浅看 JSTL标签库和EL表达式
- 2048小游戏(javascript代码)
- OpenCV学习Histogram&equalizeHist&Lomography effect&Cartoonize effect实现
- TraceGL监控Node.js应用或者浏览器JavaScript代码
- React Router context.router 未定义错误
- JS设计模式之桥接模式