天天看点

找出字符串中第一个只出现一次的字符 输入描述: 输入一个非空字符串 输出描述: 输出第一个只出现一次的字符,如果不存在输出-1 示例1: 输入 asdfasdfo 输出 o

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

输入描述:

输入一个非空字符串

输出描述:

输出第一个只出现一次的字符,如果不存在输出-1

示例1:

输入

asdfasdfo

输出

o

分析:

方法(1):用map求解

void first_one(string& s)
{
	map<char, int> m;
	for (int i = 0; i < s.size(); i++)
	{
		m[s[i]]++;
	}
	for (int i = 0; i < s.size(); i++)
	{
		if (m[s[i]] == 1)
		{
			cout << s[i] << endl;
			return;
		}
	}
	cout << -1 << endl;
}
           

方法(2):自己做每个字母的类似哈希映射

//自己做每个字母的类似哈希映射
void first_one1(string& s)
{
	int count[256] = { 0 };//存储256个字符每个字符出现的次数

	for (int i = 0; i < s.size(); i++)
	{
		count[s[i]]++;
	}
	for (int i = 0; i < s.size(); i++)
	{
		if (count[s[i]] == 1)
		{
			cout << s[i] << endl;
			return;
		}
	}
	cout << -1 << endl;
}
           
day