剑指 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 };

 

相关文章:

  • 2021-08-06
  • 2021-07-12
  • 2021-12-16
  • 2021-08-13
  • 2021-06-13
  • 2022-02-02
  • 2022-12-23
  • 2021-09-20
猜你喜欢
  • 2021-08-27
  • 2021-07-04
  • 2022-03-04
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
相关资源
相似解决方案