这个题目看似简单,把代码调试通过花了我两个多小时
唉,越做对自己越没信心,看来要再把数据结构复习一遍了。
解题思路:利用哈希表,因为字符最多只有255个,可以
利用这个特性建立一个哈希表,将字符串中所有的字符映射到
这个哈希表中,记录出现的每个字符的个数。最后查找哈希表
获取第一个出现字数为一的字母。
这里有一个问题,我们如何知道我们取到的是字符串中的第一
个出现一次的字母,这里要求我们在映射字符的时候,顺便将其
第一次出现的位置记录到哈希表结构中去。位置最靠前的当然就
是第一个只出现一次的字母了。
在实现过程中,可以自己实现一个定制的哈希表结构,但是
我嫌太麻烦了,就利用了一些个小技巧,利用一个Set来记录
出现了那些字符,在定义一个结构体记录每个字符出现的次数和
首次在字符串中出现的位置。
源代码:(在VC6下通过编译,正确执行)