• 算法试题


    题目

    题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,
    第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。

    思路

    思路:引入两个辅助存储空间。一个Dict存储当前出现的字符以及字符出现的次数,一个List存储当前出现字符。
    然后每次比较List的第一个字符在Dict中对应的次数,如果为1则输出这个字符,如果不为1则弹出这个字符比较下一个字符。

    答案

    标准答案

    # -*- coding:utf-8 -*-
    class Solution:
        # 返回对应char
        def __init__(self):
            # 存储当前字符
            self.alist = []
            # 存储当前字符及其出现次数,出现大于1次,就设成2次
            self.adict = {}
    
        def FirstAppearingOnce(self):
            # write code here
            while len(self.alist) > 0 and self.adict[self.alist[0]] == 2:
                self.alist.pop(0)
            if len(self.alist) == 0:
                return '#'
            else:
                return self.alist[0]
    
        def Insert(self, char):
            # write code here
            if char not in self.adict.keys():
                self.adict[char] = 1
                self.alist.append(char)
            else:
                self.adict[char] = 2

    自我实现答案

    class Firstone:
        def __init__(self, s):
            self.di = {}
            self.li = []
            self.s = s
    
        def ins(self):
            for i in self.s:
                if not self.di.get(i, ""):
                    self.di[i] = 1
                    self.li.append(i)
                else:
                    self.di[i] = 2
            return self.di, self.li
    
        def findfirstone(self):
            for i in self.li:
                if self.di[i] == 1:
                    return i
            return 0
    
    
    findone = Firstone(s)
    
    print(findone.ins())
    print(findone.findfirstone())
  • 相关阅读:
    工具.MySQL
    SqlServer.日期时间格式化输出(资料)
    SqlServer2012.安装
    SQL.【转】获取存储过程返回值的几种方式
    SQL.【转】SqlServer如何获取存储过程的返回值
    SQL.@,@@、#,##
    Oracle10g.CentOS6安装_遇到的问题(02)
    jQuery FileUpload 插件[转]
    EF6+Oracle12c+DBFirst+VS2015:EF6.0添加实体模型闪退问题解决
    IIS
  • 原文地址:https://www.cnblogs.com/shijieli/p/10802622.html
Copyright © 2020-2023  润新知