第一个只出现一次的字符
2016-03-14 20:09
330 查看
题目描述:
在字符串中找出第一个只出现一次的字符,如输入“abaccdeff”,则输出“b”。
解决办法:
字符是一个长度为8的数据类型,因此共有256种可能,于是我们创建一个长度为256的数组,每个字母根据其ASCLL码值作为数组的下标对应数组的一个数字,而数组中存储的是每个字符出现的次数。这样我们就创建了一个大小为256,以字符ASCLL码作为键值的哈希表。
代码实现:
在字符串中找出第一个只出现一次的字符,如输入“abaccdeff”,则输出“b”。
解决办法:
字符是一个长度为8的数据类型,因此共有256种可能,于是我们创建一个长度为256的数组,每个字母根据其ASCLL码值作为数组的下标对应数组的一个数字,而数组中存储的是每个字符出现的次数。这样我们就创建了一个大小为256,以字符ASCLL码作为键值的哈希表。
代码实现:
#include <stdio.h> char FirstNotRepeatingChar(char* pString) { if(pString == NULL) return '\0'; const int tableSize = 256; unsigned int hashTable[tableSize]; for(unsigned int i = 0; i<tableSize; i++) hashTable[i] = 0; char* pHashKey = pString; while((*pHashKey) != '\0') //用字符的ascll码作为数组下标的索引(键)存储每个字符出现的次数 hashTable[*(pHashKey++)]++; pHashKey = pString; while((*pHashKey) != '\0') { if(hashTable[*pHashKey] == 1) return *pHashKey; pHashKey++; } return '\0'; } int main() { char* pString = "abaccdeff"; char result = FirstNotRepeatingChar(pString); printf("%c\n",result); return 0; }
相关文章推荐
- 《谁的青春不迷茫》——刘同
- java虚拟机之java内存回收
- LeetCode题解-----Majority Element II 摩尔投票法
- 转载:C# HashSet 用法
- Linux命令之mkdir
- Javascript冒泡排序
- YTU:小数计算——结构体
- 数据结构和二叉树操作的封装
- 通过源码了解ASP.NET MVC 几种Filter的执行过程
- mysql插入返回当前生成的主键
- JS基础回顾,小练习(去除字符串空格)
- AlphaGo实现论文阅读笔记一
- Unity实例-坦克大战
- XStream应用总结
- 2. Add Two Numbers
- 欢迎使用CSDN-markdown编辑器
- 剑指offer(二维数组中的查找)
- IDEA 项目打成jar包
- [C/C++]_[判断程序是32位还是64位]
- YTU:学生成绩输入和输出