《剑指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:字符串中第一个只出现一次的字符