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

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


相关文章推荐

经典面试题--字符串系列(二)--找出第一个出现一次的字符

题目:在字符串中找出第一个出现一次的字符串,如输入“”

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

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

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

1、题目:找出一个字符串中,第一个只出现一次的字符,如“zzzxccddzzsfdg”
  • wwkaven
  • wwkaven
  • 2014年07月31日 11:19
  • 432

找出字符串中第一个只出现过一次的字符和位置

题目:找出字符串中第一个只出现过一次的字符和位置 比如:abcebad 只出现过一次的第一个字符应该是c,第3个。 @左耳朵耗子 大哥说的算法如下:        int[] pos...
  • lazy_p
  • lazy_p
  • 2013年07月31日 20:22
  • 3579

华为OJ题目(一):找出字符串中第一个出现一次的字符

#include #include using namespace std; char Findchar(char* pInputString) { if (!pInputString...

华为OJ ---找出字符串中第一个只出现一次的字符(java实现)

题目描述:找出字符串中第一个只出现一次的字符详细描述:接口说明原型:bool FindChar(char* pInputString, char* pChar);输入参数:char* pInputSt...

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

转载:http://zhedahht.blog.163.com/blog/static/25411174200722191722430/ 题目:在一个字符串中找到第一个只出现一次的字符。如输入aba...
  • memewry
  • memewry
  • 2012年07月22日 14:58
  • 494

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

题目:在字符串中找出第一个只出现一次的字符。如输入 “abaccdeff”,则输出b。 思路分析: (1)由于题目与字符出现的次数相关,那么是不是可以统计每个字符在该字符串中出现的次数?要达到这个...

在字符串中找出第一个只出现一次的字符。经典C语言例题

原题要求:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'。思考过程:字符串中字符有很多,只出现一次的也有很多,最直接简单的方法就是记录下每个字符出现的个数,然后从第一...

只允许遍历一遍字符串,找出字符串中第一个只出现一次的字符

find the first unique character in  a string and you can just traverse this string only one time. if...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第十七题(找出字符串中第一个只出现一次的字符)
举报原因:
原因补充:

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