前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >02-leetcode: explore-strings-34 字符串中的第一个唯一字符

02-leetcode: explore-strings-34 字符串中的第一个唯一字符

作者头像
用户7685359
发布2020-08-24 16:24:56
2670
发布2020-08-24 16:24:56
举报
文章被收录于专栏:FluentStudy

leetcode explore 字符串类第三题:字符串中的第一个唯一字符。

题目分析

这里把题目贴出来:

代码语言:javascript
复制
Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.

Examples:

s = "leetcode"
return 0.

s = "loveleetcode",
return 2.
Note: You may assume the string contain only lowercase letters.

题意拆解:

1、输入:字符串 2、输出:整数,这个整数的含义是字符串中第一个不重复字符的下标,如果不存在,返回-1 3、注意:我们假定输入的字符串中中包含小写的字母(从注意事事项中,我们可以看到平常面试中,我们应该考虑到的细节问题

参考答案

对于可迭代对象判断重复,下意识要想到这几个点:

1、set() 和 dict() 可用于去重 2、dict() 用于判断 key 是否存在效率很高

只要想到上面两点,加上题目对空间和时间复杂度要求也不高,解题就很容易了,参考答案如下:

代码语言:javascript
复制
class Solution(object):
    def firstUniqChar(self, s):
        """
        :type s: str
        :rtype: int
        """
        if not s:
            return -1

        d = {}
        for i in range(len(s)):
            if d.get(s[i]):
                continue
            if s.count(s[i]) > 1:
                d[s[i]] = 1
                continue
            return i

        return -1

总结

题目本身并不难,但是我们看到每次题目都会有一些假设条件,这些条件一般是用来规范输入和输出的。但是在实际面试中,这些可能反而会成为面试官的考试点,他并不会给出这些假设条件,如果你能主动去询问,会给你加分。

通常要注意的点:

1、数值问题:数值的范围,是否会超限。一般 Python 数值是不会超限,但如果是其他语言需要注意,同时也可以像面试官确认数值范围。

2、字符串问题:是否区分大小写?是否包括其他字符?等等。

注:点击阅读原文可进入题目。

让我知道你在看

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FluentStudy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目分析
  • 参考答案
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档