码迷,mamicode.com
首页 > 其他好文 > 详细

【字符串】387. 字符串中的第一个唯一字符

时间:2020-05-03 20:16:06      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:这一   次数   列表   存在   class   img   fir   inf   题目   

题目:

技术图片

 

 

解答:

方法一: 线性时间复杂度解法
这道题最优的解法就是线性复杂度了,为了保证每个元素是唯一的,至少得把每个字符都遍历一遍。

算法的思路就是遍历一遍字符串,然后把字符串中每个字符出现的次数保存在一个散列表中。这个过程的时间复杂度为 O(N)O(N),其中 NN 为字符串的长度。

接下来需要再遍历一次字符串,这一次利用散列表来检查遍历的每个字符是不是唯一的。如果当前字符唯一,直接返回当前下标就可以了。第二次遍历的时间复杂度也是 O(N)O(N)。

 1 class Solution {
 2 public:
 3     int firstUniqChar(string s) 
 4     {
 5         int length = s.size();
 6         std::map<char, int> mp;
 7         
 8         // build hash map: character and how often it appears
 9         for (int i = 0; i < length; i++)
10         {
11             char cc = s[i];
12             mp[cc]++;
13         }
14 
15         // find the index
16         for (int i = 0; i < length; i++)
17         {
18             if (mp[s[i]] == 1)
19             {
20                 return i;
21             }
22         }
23 
24         return -1;
25     }
26 };

 

【字符串】387. 字符串中的第一个唯一字符

标签:这一   次数   列表   存在   class   img   fir   inf   题目   

原文地址:https://www.cnblogs.com/ocpc/p/12823095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!