python 三个数组实现,时间复杂度O(2n)

第一个只出现一次的字符

http://www.nowcoder.com/questionTerminal/1c82e8cf713b4bbeb2a5b31cf5b0417c

读题很有问题,修改了好几次,写的第一个答案返回字符,第二个答案以为最多出现两次,哎,写完又发现python 的话直接使用 s.count(s[i]) == 1就够了

def FirstNotRepeatingChar(self, s):
    """
    在一个字符串(0<=字符串长度<=10000,全部由字母组成)
    中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
    s  是个字符串
    而且返回的应该是位置
    还可能只出现两次
    其实可以用下面这一句,如果Java还可以lastIndexOf()
    s.count(s[i]) == 1
    :param s:
    :return:
    """
    list=[]# 存字符
    res=[] # 存数量 其实是sum
    resss=[]
    for index,char in enumerate(s):
        if char in list:
            res[list.index(char)]+=1
        else:
            list.append(char)
            res.append(1)
            resss.append(index)
    #遍历数组
    for index,num in enumerate(res):
        if num ==1:
            return resss[index]
    return -1
全部评论

相关推荐

10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务