找出字符串中第一个只出现一次的字符 输入描述: 输入一个非空字符串 输出描述: 输出第一个只出现一次的字符,如果不存在输出-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;
}

猜你喜欢

转载自blog.csdn.net/lyl194458/article/details/89601219