天天看點

找出字元串中第一個隻出現一次的字元 輸入描述: 輸入一個非空字元串 輸出描述: 輸出第一個隻出現一次的字元,如果不存在輸出-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