在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 (1)不使用额外空间,时间复杂度是O(n^2) 像冒泡排序那样,内存循环对外循环判断,比如第一个a,扫描后续元素,有a则不满足。 (2)哈希表。 扫描完字符串后,就扫描哈希表:if(flag == 1 && a[ i ] ...
分类:
其他好文 时间:
2017-12-01 17:40:13
阅读次数:
176
偶然在群里看到这个小题, 就用python做了做。 思路就是建一个够大的列表并初始化,把每个字符的asc码作为下标,存到列表里, 然后该位置的值就存字母的出现次数, 最后再迭代原字符串并判断列表值是否等于1。 输出第一个值为1的字符即可。 ps:ord()是把字符串转换为它的asc码。 实现如下: ...
分类:
其他好文 时间:
2016-10-15 16:46:02
阅读次数:
125
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 代码如下: import java.util.Scanner; public class Test2 { public static char first(String s) { char result = '0' ...
分类:
其他好文 时间:
2016-08-23 21:55:58
阅读次数:
117
第17 题:题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b思路:要找出只出现一次的字符,很明显需要统计所有字符出现的次数,然后找出次数为一的那一个,统计次数最先想到的是hashTable,但此题有更好的办法,因为每个char其实对应一个唯一的ASCII值,所以可以...
分类:
编程语言 时间:
2015-10-24 08:58:07
阅读次数:
171
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。分析:这道题是2006年google的一道笔试题。看到这道题时,最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符..
分类:
其他好文 时间:
2015-09-12 16:20:56
阅读次数:
155
//如输入 abaccdeff,则输出 b
void PrintFirstOneAppearOnce(char* strString)
{
int nTime[26];
memset(nTime, 0, sizeof(nTime));
for (int i = 0; i < strlen(strString); i++)
{
int nNumber = strString[i] ...
分类:
其他好文 时间:
2015-08-27 18:39:16
阅读次数:
129
题目描述在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。分析与解法这个问题比较容易解决,对于ASCII字符,可以构造一个大小为256的数组,用来记录每个字符出现的次数。第一遍遍历字符串,统计每个字符出现的次数。第二次遍历字符串,找到第一个出现一次的字符。代码如下: 1 ...
分类:
其他好文 时间:
2015-08-27 00:07:00
阅读次数:
169
在一个字符串中找到第一个只出现一次的字符。
如输入”abaccdeff”,输出’b’解析:
使用一个数组,记录每个字符出现的次数,最后遍历计数数组,第一个个数为 1 的即为结果。
由于字符char,只有8 bit, 只有255种可能,因此只需声明一个255大小的数组。遍历一次字符串,遍历2次计数数组:时间复杂度O(n)
空间占用255*int = 512 Byte,是一个固定大小:空间复杂度...
分类:
其他好文 时间:
2015-07-28 23:06:50
阅读次数:
129
问题描述在一个字符串中找到第一个只出现一次的字符。如输入字符串"abbc",应该输出字符'a'。程序public class FirstCharacter { // Time/Space: O(n) public char findFirstAppearChar(String s) { if (s....
分类:
其他好文 时间:
2015-07-03 11:51:56
阅读次数:
122
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。由于题目与字符出现的次数相关,我们可以统计每个字符在该字符串中出现的次数。要达到这个目的,我们需要一个数据容器来存放每个字符的出现次数。在这个数据容器中可以根据字符来查找它出现的次数,也就是说这个容器的作用 是把一个...
分类:
其他好文 时间:
2015-05-17 00:38:43
阅读次数:
130