《剑指offer》——第一个只出现一次的字符
2016-01-18 19:39
447 查看
题目:在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串或不存在只出现一次的字符,返回-1。
/* 时间复杂度为O(n),空间复杂度为O(1) */ int FirstNotRepeatingChar(string str) { if(str.length() == 0)//输入空串,返回-1 return -1; const int tableSize = 256;//字符是一个长度为8的数据类型,总共有256种可能 unsigned int hashTable[tableSize];//建立一个键为字符,值为整数的hashTable for(unsigned int i = 0; i < tableSize; i++)//初始化hashTable中所有的值为0 hashTable[i] = 0; for(int i = 0; i < str.length(); i++)//遍历字符串,更新hashTable的值 hashTable[str[i]]++; int pos = -1; for(int i = 0; i < str.length(); i++)//再次遍历字符串 { if(hashTable[str[i]] == 1)//如果hashTable中对应键的值为1,记录下该字符的位置 { pos = i; break; } } return pos;//返回位置 }
相关文章推荐
- 加载模式
- document.body和document.body的区别和兼容性&&js自定义弹框的方法
- HDU1015Safecracker
- js中将两个日期字符串相减 获得天数
- Play FrameWork JSON操作小结
- 记不住就存下来---- HTML 5 列表相关元素
- CSS3 最小内容尺寸(min-content size)和最大内容尺寸(max-content size)简介
- 合并排序 js版本
- 新手学JavaScript(三)----超酷消息警告框插件(SweetAlert)
- Web基础系列三、JavaScript(页面行为)
- JavaScript函数补完:sort()排序
- 转载:jQuery的deferred对象详解
- 【重拾Effective Java】二
- js/javascript中判断对象类型
- CSS练习02
- Angular常见错误描述
- W3School-CSS 分类 (Classification) 实例
- 怎样成长为一个优秀的 Web 前端开发工程师?
- 【前端】不使用图片制作三角小图标
- 初学web开发需要掌握哪些方面?