Loading

剑指 Offer 50. 第一个只出现一次的字符

思路

方法:哈希表

第一次遍历字符串s,用哈希表统计每个字符出现的次数,第二次遍历字符串s,当某字符出现次数为1时,返回之。

复杂度分析

时间复杂度:O(n)。

空间复杂度:O(1)。由于题目指出 s 只包含小写字母,因此最多有 26 个不同字符,最多需占用 O(26) = O(1) 的额外空间。

 1 class Solution {
 2 public:
 3     char firstUniqChar(string s) {
 4         vector<int> cnt(27, 0);
 5         for(int i = 0; i < s.length(); ++i) {
 6             cnt[s[i]-'a']++;
 7         }
 8 
 9         for(int i = 0; i < s.length(); ++i) {
10             if(cnt[s[i]-'a'] == 1)
11                 return s[i];
12         }
13 
14         return ' ';
15     }
16 };

 

posted @ 2020-11-09 13:36  拾月凄辰  阅读(64)  评论(0编辑  收藏  举报