[LeetCode]字符串中的第一个唯一字符

题目:

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:

s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.

注意事项:
您可以假定该字符串只包含小写字母。

分析:

  • 1,常见第一想法是,双重遍历,就可以得到答案了。时间复杂度为O(n^2)。
  • 2,另外,题设限定死了包含的字母类型,所以使用int [26]数组,就可以包含所有字母,也就可以用这个数组来统计出现的个数。时间复杂度也是O(n^2)。
  • 3,这类题目有个常用的解法就是使用HashMap来解决。
class Solution {
public:
    int firstUniqChar(string s) {
        unordered_map<char, int> m;
        for (char c : s) ++m[c];
        for (int i = 0; i < s.size(); ++i) {
            if (m[s[i]] == 1) return i;
        }
        return -1;
    }
};

上面代码在LeetCode上的运行时间为80 ms。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,768评论 0 33
  • 前言 2. 实现 Singleton 3. 数组中重复的数字 4. 二维数组中的查找 5. 替换空格 6. 从尾到...
    Observer_____阅读 2,975评论 0 1
  • “哈哈哈!瓶子真的变形了!”教室里的同学们七嘴八舌地在干嘛呢?我就过去瞧一瞧了一下。原来老师在做实验呢!我非常好奇...
    江上归舟阅读 641评论 1 0
  • 前言 retrofit作为最近非常火的一个网络请求框架,已经被很多同学应用到了项目中。但是同学们都知道它运作的一个...
    野比野比我是大雄阅读 665评论 0 5
  • 工作两年,接触的人越来越局限,慢慢的眼界就变低了。今天点进昔日同学的微博,不免一惊:当初同坐一间教室,如今已然相距...
    pppAppp阅读 194评论 0 0