首页 > 试题广场 > 字符流中第一个不重复的字符
[编程题]字符流中第一个不重复的字符
  • 热度指数:213937 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。

输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。
头像 凉风起天末
发表于 2020-02-02 22:22:20
时间复杂度O(1),空间复杂度O(1):无须存储所有字符 这道题目的大致思路其实都差不多,只不过看了许多答案,发现都是存储了所有字符,然后再进行遍历判断其实并不需要这样,这样子 HR 哪里会给 Offer 呢? 用户 txlstars 的回答和本文的优化相同(绝对不是面向 Ctrl+C 编程的~) 展开全文
头像 上二层楼
发表于 2019-07-26 23:23:25
class Solution { public:     //仿照hash表实现,str存储插入的字符,hash[256]存储插入字符的个数     string str;     char hash[256] = {0};     void Insert(char ch)     {       展开全文
头像 一颗闪闪发亮的马路星
发表于 2020-02-16 00:56:50
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l" 这题其实并 展开全文
头像 法拉利201903231900848
发表于 2019-08-06 17:41:24
# -*- coding:utf-8 -*- class Solution:     def __init__(self):         self.s=''         self.dict={} #创建字典,key为读取的字符串中的每一个字符,val为每个字符出现的个数的计数值     #  展开全文
头像 AaronYuSeaSon
发表于 2019-11-28 20:54:26
LinkedHashMap<Character,Integer> map = new LinkedHashMap<>(); public void Insert(char ch) { if(map.containsKey(ch)) { 展开全文
头像 中工升达预备毕业生
发表于 2019-11-26 20:05:49
看到很多讨论代码中FirstAppearingOnce()方法中都是这样写的:for(char ch : str) | for(int i=0;i<size;++i)真的是... emmm... 【澄清】offer书上代码中occurrence[i]数组有两个作用,很是巧妙: 记录字符出现的 展开全文
头像 张孩蛋
发表于 2020-02-14 21:35:14
class Solution { public: //Insert one char from stringstream void Insert(char ch) { str += ch; save[ch]++; } //retur 展开全文
头像 牛客6094022号
发表于 2020-02-08 13:16:30
int[] streamFlag = new int[128];     int count = 1;     public void&n 展开全文
头像 救救孩子吧!offer++;
发表于 2019-08-21 12:48:52
时间O(N) 空间O(n) class Solution { public: //Insert one char from stringstream void Insert(char ch) { str += ch; mymap[ch]++; 展开全文
头像 ccจุ๊บ
发表于 2020-02-17 20:25:43
from collections import OrderedDict class Solution: # 返回对应char def init(self): # 初始化一个有序字典(里边的键全是只出现一次的) self.doulist = [] 展开全文