找出字符串中第一个只出现一次的字符(题面已经更新)/华为机试(C/C++)
题目描述 找出字符串中第一个只出现一次的字符
输入描述: 【找出字符串中第一个只出现一次的字符(题面已经更新)/华为机试(C/C++)】输入一个非空字符串
输出描述: 输出第一个只出现一次的字符,如果不存在输出-1
示例1
输入
asdfasdfo
输出
o
代码:
//第五十七题找出字符串中第一个只出现一次的字符(题面已经更新)
#include
#include
using namespace std;
int main()
{
string str;
while (cin >> str)
{
int a[26]{ 0 };
int aP[26]{ 0 };
int A[26]{ 0 };
int AP[26]{ 0 };
size_t sLength = str.length();
for (int i = 0;
i < sLength;
i++)
{
if (isupper(str[i]))
{
if (A[str[i] - 'A'] == 0)
AP[str[i] - 'A'] = i;
A[str[i] - 'A']++;
}
else
{
if (a[str[i] - 'a'] == 0)
aP[str[i] - 'a'] = i;
a[str[i] - 'a']++;
}}
int mun = 1;
int iMinId = 0;
int iMinPosition = 1000;
for (int i = 0;
i < 26;
i++)
{
if (A[i] == 1)
{
if (iMinPosition > AP[i])
{
iMinPosition = AP[i];
iMinId = i;
}
mun = 0;
}
if (a[i] == 1)
{
if (iMinPosition > aP[i])
{
iMinPosition = aP[i];
iMinId = i;
}
mun = 0;
}
}
if (mun)
cout << -1 << endl;
else
{
if (aP[iMinId] == iMinPosition)
{
char temp = iMinId+ 'a';
cout << temp << endl;
}
else
{
char temp = iMinId + 'A';
cout << temp << endl;
}
}
}
return 0;
}
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募
- 2020-04-07vue中Axios的封装和API接口的管理