第一个只出现一次的字符

第一个只出现一次的字符_牛客网

https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c?tpId=13&tqId=11187&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).

方法1:最容易想到的方法,这种方法不需要其他空间,但算法复杂度为O(n^2)

def FirstNotRepeatingChar(self, s):
    # write code here
    n = len(s)
    for i in range(n):
        temp = s[:i] + s[i+1:]
        if s[i] not in temp:
            return i
    return -1

方法二:遍历时使用二维数组、字典或者一维数组与哈希结合存储相关信息,算法复杂度O(n)
字典:

 def FirstNotRepeatingChar(self, s):
    # write code here

    length = len(s)
    if length == 0:
        return -1
    item = {}
    for i in range(length):
        if s[i] not in item.keys():
            item[s[i]] = 1
        else:
            item[s[i]] += 1
    for i in range(length):
        if item[s[i]] == 1:
            return i
    return -1

哈希:

def FirstNotRepeatingChar(self, s):
    # write code here
    if len(s) == 0:
        return -1
    count = [0] * 100
    for c in s:
        count[ord(c)-ord('A')] += 1
    for i, c in enumerate(s):
        if count[ord(c)-ord('A')] == 1:
            return i
    return -1
全部评论

相关推荐

服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务