找到第一个不重复的字符

问题描述:在字符串中找到第一个不重复的字符,如,'total'中第一个不重复的字符为'o'。

思想:扫描两次字符串,第一次:建立一个对应字符的字典,键值为“出现一次”和“不是一次”;第二次:扫描出第一个键值为“出现一次的”字符。

def searchOnce(s):
    if len(s)==0:
        return -1
    elif len(s)==1:
        return s[0]
    else:
        sDic={}
        once=1
        notonce=2
        for word in s:
            if not sDic.get(word):
                sDic[word]=once
            else:
                sDic[word]=notonce
        for word in s:
            if sDic[word]==once:
                return word
        return -1

if __name__ == "__main__":
    s='teeth'
    print searchOnce(s)

扫描两次,时间复杂度为O(n)。建立字典,空间复杂度增加,最坏为n。

 

转载于:https://www.cnblogs.com/rgtv-wilkins/p/4398123.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值