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

原创 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;
}


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

在字符串中查找第一个只出现一次的字符。例如输入字符串"abaccdef",输出b,     分析:(1)创建一个数组,并初始化数组,                       (2)遍历字符串,...
  • xulu_258
  • xulu_258
  • 2015年05月26日 20:32
  • 954

在字符串(字母)中找出第一个只出现一次的字母

第一个只出现一次的字符:在字符串中找出第一个只出现一次的字母。函数支持汉字查询,但不知道这个函数在实际应用有什么用。 在编程中发现直接 这样 arr[字符串]是设定对象属性,不是访问数组。var fi...
  • 6rl
  • 6rl
  • 2016年11月01日 15:42
  • 587

剑指offer----第一个只出现一次的字符位置----java实现

在一个字符串(1字符串长度,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始。 如果从头开始让每一个字符都与其后面的字符相比较,当第一个出现一次的字符,就结束...
  • snow_7
  • snow_7
  • 2016年07月07日 17:32
  • 960

在一个字符串中找到第一个只出现一次的字符。如输入:abcdab,则输出:c。

题目:在一个字符串中找到第一个只出现一次的字符。如输入:abcdab,则输出:c。 分析:看到这道题时,有两种思路: (1)最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到某字符时...
  • yanxiaolx
  • yanxiaolx
  • 2016年06月02日 22:47
  • 1686

第一个只出现一次的字符 java实现

题目描述 在一个字符串(1 分析:由于题目与字符出现的次数相关,我们是不是可以统计每个字符在该字符串中出现的次数,要打到这么目的,我们需要一个数据容器来存储每个字符在字符串中出现的次数,这...
  • qq_23217629
  • qq_23217629
  • 2016年10月09日 13:18
  • 1409

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

题目描述在一个字符串(1
  • lingongheng
  • lingongheng
  • 2016年10月05日 09:48
  • 774

【华为OJ】找出字符串中第一个只出现一次的字符

找出字符串中第一个只出现一次的字符 详细描述: 接口说明 原型: bool FindChar(char* pInputString, char* pChar); 输入参数: char* pInputS...
  • haoxiaodao
  • haoxiaodao
  • 2015年04月20日 20:22
  • 711

剑指Offer面试题35(java版):第一个只出现一次的字符

题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出'b'. 看到这样的题目,我们最直观的想法就是从头开始扫描这个字符串中的字符。当访问某个字符时拿这个字符和后面的每个字...
  • jsqfengbao
  • jsqfengbao
  • 2015年08月09日 16:14
  • 2464

【c语言】第一个只出现一次的字符题目:在字符串中找出第一个只出现一次的字符

// 第一个只出现一次的字符题目:在字符串中找出第一个只出现一次的字符。 // 如输入“abaccdeff”,则输出’b’。 #include #include char find...
  • zhaoyaqian552
  • zhaoyaqian552
  • 2015年07月06日 20:45
  • 1544

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

题目描述:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析:这道题是2006年google的一道笔试题。 方法一:     简单粗暴的遍历完成,只适用于字符串较...
  • sofia_m
  • sofia_m
  • 2017年11月12日 17:58
  • 235
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:查找第一个只出现一次的字符
举报原因:
原因补充:

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