题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
思路:
1)哪些字符只出现了一次:哈希表统计每个字符出现的次数。
2)找到第一个出现了一次的字符:从头遍历字符串的字符,判断每一个字符的次数,返回第一个次数为1的字符位置。没有则返回-1
1 class Solution {
2 public:
3 int FirstNotRepeatingChar(string str) {
4 // map<char, int> mp;
5 int hash[256] = {0};
6 int len = str.length();
7 for (int i = 0; i < len; i++) {
8 hash[str[i]]++;
9 }
10 for (int i = 0; i < len; i++) {
11 if (hash[str[i]] == 1)
12 return i;
13 }
14 return -1;
15 }
16 };