利用哈希表的原理,找到一个字符串中第一次出现的一次的字符
2012-08-29 22:23
288 查看
#include <stdio.h> #include <string.h> #include <stdlib.h> char checkFirstChar(char *stringSrc) { char *ptr = stringSrc; int arraryHash[255]; memset(arraryHash,0,sizeof(int)*255); while (*ptr != '\0') { arraryHash[*ptr]++; ptr++; } int index = 0; while (index < 255) { if (arraryHash[index] == 1) return (char)index; index++; } } int main(int argc, char *argv[]) { char *sourceString = "abcdabce"; printf("%c\n",checkFirstChar(sourceString)); return 0; }
今天在看一道C语言编程题。
哈希表Hash也称散列表,是根据关键码值key value而直接进行访问的数据结构。即,它通过把关键码值隐射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫散列表。
定义hash表和基本数据结点:
typedef struct Node { int data; struct Node * next; }Node; typedef struct HashTable { Node *value[10]; }HashTable;
创建一个Hash表:
HashTable *CreateHashTable() { HashTable *pHashTbl = (HashTable *)malloc(sizeof(HashTable)); memset(pTH, 0, sizeof(HashTable)); return pHashTbl }
找出一个字符串中第一个只出现一次的字符。
分析:利用和哈希表的原理差不多的思路,就是创建一个表,储存每个字符出现的次数,然后遍历这个表直到找到第一次出现的一次的那个字符。
关于哈希表的大小,因为ASCII表的大小是255,因此数组的长度为255(arrayHash[255])
#include <stdio.h> #include <string.h> #include <stdlib.h> char checkFirstChar(char *stringSrc) { char *ptr = stringSrc; int arraryHash[255]; memset(arraryHash,0,sizeof(int)*255); while (*ptr != '\0') { arraryHash[*ptr]++; ptr++; } int index = 0; while (index < 255) { if (arraryHash[index] == 1) return (char)index; index++; } } int main(int argc, char *argv[]) { char *sourceString = "abcdabce"; printf("%c\n",checkFirstChar(sourceString)); return 0; }
相关文章推荐
- 哈希表对字符串的高效处理1:在一个字符串中找到第一个只出现一次字符
- 利用hashtable思想,保存在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 微软面试100题目之17 :在一个字符串中找到第一个只出现一次的字符。
- 在一个字符串中找到第一个只出现一次的字符
- 一个字符串中找到第一个只出现一次的字符
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 算法习题17:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 15. Google面试题:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串中找到第一个只出现一次的字符
- 17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符,要求时间复杂度O(n)
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- ACM_3:在一个字符串中找到第一个只出现一次的字符
- 【剑指Offer-时间效率平衡】在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置