(带思路, 详解) 牛客 HJ59 : 找出字符串中第一个只出现一次的字符
程序员文章站
2022-06-11 10:35:28
...
#include<iostream>
#include<string>
using namespace std;
//思路:
//先遍历一遍字符串, 给每次出现的字母对应的位置标记
//再次遍历数组, 找出第一次出现的字母, 返回
void findFirstChar() {
string s;
//循环输入, 多组测试用例
while(cin >> s) {
//标记数组, 直接128对应ASCII码, 无需计算偏移量
int count[128] = {0};
int flag = 0;//是否找到的标记
//第一次循环, 字符对应位置++
for(auto& ch : s) {
count[ch]++;
}
//再次循环, 找到第一个标记为1的字符, 并返回
for(auto& ch : s) {
if(count[ch] == 1) {
//找到了, 标记置1
flag = 1;
cout<< ch << endl;
break;
}
}
//没找到
if(flag == 0)
cout << -1 << endl;
}
}
int main() {
findFirstChar();
return 0;
}