查找第一个只出现一次的字符

原创 2015年07月09日 16:29:15

这类题目用到的思想就是就用哈希表,这样把字符串对应到一个数组,hashtable中。因为全部的字符总共有256个,因此建立一个hashtable[256]。

算法的过程是这样的,首先遍历一遍字符串,根据字符的值来使得hashtable[字符]做统计,此字符出现一次,那么对应的数组元素加一。此时时间复杂度O(logn)。统计完各个字符出现的次数之后,找出次数为一的即可。时间复杂度O(logn)。所以总的时间复杂度O(logn)。空间复杂度O(256)常数级别,应该是O(1)。

下面是代码:

// FirstNotRepeatingCharctor.cpp : 定义控制台应用程序的入口点。
/*
		@mishidmeudong
		@2015-7-9-16:22
*/
//

#include "stdafx.h"
#include<iostream>
using namespace std;

char FirstNotRepeatingChar(char *pString)
{
	if (pString == NULL)
		return '\0';
	char *pTemp = pString;
	unsigned hashTable[256] = { 0 };

	while (*pTemp != '\0')
	{
		hashTable[*pTemp]++;
		pTemp++;
	}

	pTemp = pString;

	while (*pTemp != '\0')
	{
		if (hashTable[*pTemp] == 1)
			return *pTemp;
		pTemp++;
	}
	return '\0';
}

int _tmain(int argc, _TCHAR* argv[])
{
	char string[] = "asdfasdfasdfasdfasdfyadsfasdfasdfasdfasdfdsafsadfadfasdfasfdasfdsafdadsfasdfasdfadsfasdfadsf";
	char FirstCharctor;
	FirstCharctor = FirstNotRepeatingChar(string);
	cout << FirstCharctor << endl;
	return 0;
}


算法题之查找第一个只出现一次的字符

#include #include using namespace std; /* * 思路: * 1、从头取一个字符,然后和“其他所有的字符”(不包括自身)进行比较 * 2、若不存在与其相...

在一个字符串中查找第一个只出现一次的字符,要求复杂度为O(N)

注意:这道题的特点是查找出现一次的字符,那么就可以利用字符的特点,因为字符的个数不可能大于256,所以就可以用一个含有256个元素的数组统计所有字符出现的次数,最后再遍历一遍数组,找到次数为1的字符即...

查找一个字符串中第一个只出现两/一次的字符

题目:查找一个字符串中第一个只出现两/一次的字符 一、查找一个字符串中第一个只出现两次的字符。 比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复...

Google笔试题:哈希表的一个意想不到的应用--在字符串中查找第一个只出现一次的字符

1.问题描述 在一个字符串中找到第一个只出现一次的字符。如输入AbAssvfFCCBbhV,则输出v。   2.解题思路 如果按照传统比较的办法,时间复杂度是O(n*n),这显然不是Google面试官...

查找字符串中第一个只出现一次的字符

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析:如果字符都是8位,可以用256B的空间表示每个字符的出现次数,遍历字符串一遍完成计数,第二次遍历该字符...
  • whz_zb
  • whz_zb
  • 2012年04月03日 22:48
  • 1882

在一个字符串中找到第一个只出现一次的字符

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析:这道题是2006年google的一道笔试题。 看到这道题时,最直观的想法是从头开始扫描这个字符串中的每个字...

【C语言】找出一个字符串中第一个只出现一次的字符

题目描述:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析:这道题是2006年google的一道笔试题。 方法一:     简单粗暴的遍历完成,只适用于字符串较...
  • sofia_m
  • sofia_m
  • 2017年11月12日 17:58
  • 85

剑指offer_第一个只出现一次的字符

题目描述在一个字符串(1

找出字符串中第一个只出现一次的字符

该题采用遍历即可: 看到这个题目,最直观的想法就是就是遍历法,也就是从头开始取字符串中的一个字符,将其与其后的所有字符比较,如果有相同的字符,那么就证明它不是只出现一次的字符。当第一次出现遍历完其后...

算法与数据结构面试题(21)-在一个字符串中找到第一个只出现一次的字符

题目 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 解题思路 上一道题是求字符串中各个字符的个数,其实大同小异,这道题比上道题还要简单点,只...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:查找第一个只出现一次的字符
举报原因:
原因补充:

(最多只允许输入30个字)