数据结构和算法经典100题-17题
2015-05-20 22:49
363 查看
题目:
题目:在一个字符串中找到第一个只出现一次的字符。
如输入abaccdeff,则输出b。
这道题是2006年google的一道笔试题。
题目分析:
题目分析:
由题目可知,此问题考察字符出现的次序问题。解此问题至少需要扫描一遍字符流,得不到log(n)的时间复杂度的方法解决。那么最好的办法是需要至少扫描一遍字符流,因为是字符串,降低了很大的难度。因为字符char的长度是8,,所以我们可以建立一个整形哈希表,其键就是字符的ASCII 码。里面记录字符出现的次数。分析到这里这个问题差不多解决了,我们还是上代码吧。
路漫漫其修远兮,吾将上下而…
题目:在一个字符串中找到第一个只出现一次的字符。
如输入abaccdeff,则输出b。
这道题是2006年google的一道笔试题。
题目分析:
题目分析:
由题目可知,此问题考察字符出现的次序问题。解此问题至少需要扫描一遍字符流,得不到log(n)的时间复杂度的方法解决。那么最好的办法是需要至少扫描一遍字符流,因为是字符串,降低了很大的难度。因为字符char的长度是8,,所以我们可以建立一个整形哈希表,其键就是字符的ASCII 码。里面记录字符出现的次数。分析到这里这个问题差不多解决了,我们还是上代码吧。
// // 17th.cpp // 100-alg-tests // // Created by bobkentt on 15-5-20. // Copyright (c) 2015年 kedong. All rights reserved. // #include <stdio.h> #include <iostream> #include <string> #include "17th.h" using namespace std; // 找到字符串中第一个只出现一次的字符 char findChar(char* str) { if (NULL == str){ return 0; } char *ptr = &str[0]; int hashTable[256] = {0}; while ('\0' != *(ptr)) { hashTable[*(ptr++)]++; } while ('\0' != *(ptr)) { if (1 == hashTable[*ptr]) return *ptr; ptr++; } cout<<"Cannot find this char"<<endl; return *ptr; }
路漫漫其修远兮,吾将上下而…
相关文章推荐
- 数据结构和算法经典100题-第24题
- 数据结构和算法经典100题-第1题
- 数据结构和算法经典100题-第32题
- 数据结构和算法经典100题-第28题
- 数据结构和算法经典100题-第16题
- 数据结构和算法经典100题-第30题
- 数据结构和算法经典100题-第31题
- 数据结构和算法经典100题-第5题
- 数据结构和算法经典100题-第18题
- 数据结构和算法经典100题-第22题
- 数据结构和算法经典100题-第27题
- 数据结构和算法经典100题-第2题
- 数据结构和算法经典100题-第26题
- 数据结构和算法经典100题-第33题
- 数据结构和算法经典100题-第3题
- 数据结构和算法经典100题-第21题
- 数据结构和算法经典100题-第4题
- 数据结构和算法经典100题-第29题
- 数据结构和算法经典100题-第15题
- 数据结构和算法经典100题-第33题