一、问题描述
在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'
二、解题思路
构建一个哈希表,其中键用来存这个字符信息,值用来记录该值出现的次数
需要遍历两次这个字符串
第一次遍历:构建哈希表 ---O(n)时间复杂度
第二次遍历:哈希表的查找---O(1)时间复杂度
三、解题算法
/************************************************
author:tmw
date:2018-8-4
*************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**哈希表
因为char型是长度为
**/
char findApearOnceFirstly(char* str)
{
if( str == NULL ) return '\0';
if( strlen(str) == 1 ) return str[0];
/**初始化哈希表**/
int hashSize = 256;
int* hashTable = (int*)malloc(hashSize*sizeof(int));
int i;
for( i=0; i<hashSize; i++ )
hashTable[i] = 0;
/**第一次遍历--构建哈希表**/
for( i=0; i<strlen(str); i++ )
hashTable[str[i]]++;
/**第二次遍历,当查找到哈希值为1的,立即返回**/
for( i=0; i<strlen(str); i++ )
if( hashTable[str[i]] == 1 )
return str[i];
return '\0';
}
梦想还是要有的,万一实现了呢~~~~~加油ヾ(◍°∇°◍)ノ゙~~~~~~~~~~~~