剑指offer 第一个只出现一次的字符

题目描述

在一个字符串(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 };
原文地址:https://www.cnblogs.com/qinduanyinghua/p/11456940.html