美文网首页
2018-08-10

2018-08-10

作者: 耀話你知 | 来源:发表于2018-08-10 14:04 被阅读0次

    一开始想不明白为什么我的遍历两遍而已,就比别人的慢了。后来想,万一遇到的字符串是比较长的,那么这时候按照26个字母来检索或许平均便利次数根本不用全遍历完字符串。不过后来继续查了一下,python里的find函数本来就是返回符合要求的第一个子字符串的索引。。这个底层应该是c实现的,但是用这个find来解题,是不是应该算作弊。不过也切身体会到了,相同逻辑代码的条件下,c那些比python快在哪里。

    我的256ms:
    class Solution(object):
    def firstUniqChar(self, s):
    """
    :type s: str
    :rtype: int
    """
    # letter_dic={}
    # for i in s:
    # if i in letter_dic:
    # letter_dic[i] +=1
    # else:
    # letter_dic[i]=1
    letter_dic=collections.Counter(s)
    for i in range(len(s)):
    if letter_dic[s[i]]==1:
    return i
    return -1

    别人的50ms左右:
    class Solution(object):
    def firstUniqChar(self, s):
    """
    :type s: str
    :rtype: int
    """
    result = []
    for i in string.ascii_lowercase:
    if s.count(i) == 1:
    result.append(s.find(i))
    if len(result) > 0:
    return min(result)
    return -1

    image.png

    相关文章

      网友评论

          本文标题:2018-08-10

          本文链接:https://www.haomeiwen.com/subject/xwbkbftx.html