题解 | #找出字符串中第一个只出现一次的字符#
找出字符串中第一个只出现一次的字符
http://www.nowcoder.com/practice/e896d0f82f1246a3aa7b232ce38029d4
比较笨的解法,(个人感觉用map是较为恰当的方式,参考其他大佬用map的方法)具体思想如下:
第一轮循环:因为ASCII码总共有128个,所以不妨简历一个有128个元素的数组,然后借用HASH访问的思想,为每个字符元素对应的ASCII编码的编号所在的数组元素,对应位置的元素每出现一次,便令数组元素加1
第二轮循环:根据第一轮循环处理过后的数组,按照字符出现的顺序,逐个判断其出现次数,若为1,则找到了第一个总共出现次数只有一次的字符,否则无
#include <iostream>
using namespace std;
int main(){
string str;
cin >> str;
string res = "-1";
int arr[128] = {0};
int len = str.length();
for(int i = 0; i < len; i++){
int number = int(str[i]);
arr[number]++;
}
for(int i = 0; i < len; i++){
int number = int(str[i]);
if(arr[number] == 1){
res = str[i];
break;
}
}
cout << res << endl;
return 0;
}