《剑指Offer——字符串中第一个只出现一次的字符》代码

Posted 穿迷彩服的鲨鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《剑指Offer——字符串中第一个只出现一次的字符》代码相关的知识,希望对你有一定的参考价值。


前言

//==================================================================
// 《剑指Offer——字符串中第一个只出现一次的字符》代码
// 题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出
// ‘b’。
//==================================================================


一、示例

示例 1:

输入:s = “abaccdeff”
输出:‘b’
示例 2:

输入:s = “”
输出:’ ’

二、代码解析

1.新建.cpp文件

代码如下(示例):

//==================================================================
// 《剑指Offer——字符串中第一个只出现一次的字符》代码
// 题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出
// 'b'。
//==================================================================



#include<iostream>
#include<unordered_map>
using namespace std;

/*哈希表*/
char firstUniqChar(string s)
{
	char res = ' ';
	unordered_map<char, int> map;
	for (char c : s)
	{
		map[c] ++;
	}
	for (int i = 0; i < s.length(); ++i)
	{
		if (map[s[i]] == 1)
		{
			res = s[i];
			break;
		}
	}
	return res;
}
/*法二*/
char FirstNotRepeatingChar(const char* pString)
{
	if (pString == nullptr)
	{
		return '\\0';
	}

	const int tableSize = 256;
	unsigned int hasTable[tableSize];
	for (unsigned int i = 0; i < tableSize; ++i)
	{
		hasTable[i] = 0;
	}

	const char* pHashKey = pString;
	while (*(pHashKey) != '\\0')
	{
		hasTable[*(pHashKey++)]++;
	}

	pHashKey = pString;
	while (*(pHashKey) != '\\0')
	{
		if (hasTable[*pHashKey] == 1)
		{
			return *pHashKey;
		}
		pHashKey++;
	}
}


int main(void)
{
	string s = "abaccdeff";
	cout << "法一------>" << firstUniqChar(s) << endl;
	cout << "法二------>" << FirstNotRepeatingChar("abaccdeff") << endl;

	return 0;
}

2.测试

以上是关于《剑指Offer——字符串中第一个只出现一次的字符》代码的主要内容,如果未能解决你的问题,请参考以下文章

《剑指offer》第五十题I:字符串中第一个只出现一次的字符

剑指offer-字符流中第一个不重复的字符

剑指Offer打卡day 41—— Acwing 64. 字符流中第一个只出现一次的字符

剑指OFFER_字符流中第一个不重复的字符

剑指offer-字符流中第一个不重复的字符

剑指offer53-字符流中第一个不重复字符