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

时间:2022-07-23
本文章向大家介绍02-leetcode: explore-strings-34 字符串中的第一个唯一字符,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

题目分析

这里把题目贴出来:

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 是否存在效率很高

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

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、字符串问题:是否区分大小写?是否包括其他字符?等等。

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

让我知道你在看