第十七题(找出字符串中第一个只出现一次的字符)

原创 2014年06月20日 16:52:17

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b

o(n^2)时间复杂度的方法比较简单,遍历每一个字符,将其和后面的每个字符进行比较,若没有相同的,那么这个字符就是要寻找的字符。

要实现更低阶的时间复杂度,我们可以采用空间换时间的思想,采用哈希表解决这个问题。利用一次循环统计每个字符出现的次数,然后找出出现次数为1的字符即可,哈希表的键为字符,值为字符对应的出现次数。

这里给出分别用stl的unordered_map和自定义哈希表的实现的代码:

#include<unordered_map>
#include<iostream>
using namespace std;
namespace MS100P_17
{
	//采用stl的unordered_map
	unordered_map<char,int>	charMap;
	char firstSingle(char* str)
	{
		int length = strlen(str);
		for (int i = 0; i < length; i++)
			charMap[str[i]]++;
		for (int i = 0; i < length;i++)
		if (charMap[str[i]] == 1)
			return str[i];
		return '\0';		//未找到
	}

	char firstSingle2(char* str)
	{
		int hash[256];
		memset(hash, 0, 256*sizeof(int));
		for (int i = 0; i < strlen(str); i++)
			hash[str[i]]++;
		for (int i = 0; i < strlen(str);i++)
		if (hash[str[i]] == 1)
			return str[i];
		return '\0';		//未找到
	}

	void test()
	{
		char str[] = "abaccdeff";
		cout << firstSingle(str) << endl;
		cout << firstSingle2(str) << endl;
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	MS100P_17::test();
	return 0;
}


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

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

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

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

笔试题1——找到字符串中第一个只出现一次的那个字符

哈希表的应用,此题面试官主要考察的字符查找的时间效率,算法的时间复杂度为O(n),那么恭喜你通过此次笔试 #define tableSize 256 //哈希表的大小,因为char占一个字节...
  • barry8865
  • barry8865
  • 2017-07-20 15:24:09
  • 334

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

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

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

找出字符串中第一个只出现一次的字符 题目描述 找出字符串中第一个只出现一次的字符 详细描述: 接口说明 原型: bool FindChar(char* pInputString, char* pCha...
  • u010480899
  • u010480899
  • 2016-07-15 20:36:52
  • 1202

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

在一个字符串中找到第一个只出现一次的字符。 如输入”abaccdeff”,输出’b’解析: 使用一个数组,记录每个字符出现的次数,最后遍历计数数组,第一个个数为 1 的即为结果。 由于字符cha...
  • quzhongxin
  • quzhongxin
  • 2015-07-28 22:46:56
  • 885

Python:第一个只出现一次的字符

牛客网上的剑指 offer的在线编程: 题目描述 在一个字符串(1 # -*- coding:utf-8 -*- import time ''' 第一个只出现一次的字符 题目描述 在一个...
  • Lynette_bb
  • Lynette_bb
  • 2017-07-21 21:43:21
  • 482

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

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

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

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

算法之字符串选出第一个只出现一次的字符

好久没写了...最近打算恢复博客,尽力而为吧。 给出一串字符串,返回第一个只出现一次的字符。 如:输入:aabbccddeff 返回:f 最先想到了就是将每个字符都与所有字符对比一遍,不存在相...
  • u012614432
  • u012614432
  • 2016-10-14 13:35:50
  • 408
收藏助手
不良信息举报
您举报文章:第十七题(找出字符串中第一个只出现一次的字符)
举报原因:
原因补充:

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