本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是'g'.当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是'l'. 思路 字符只能一个一个从字符流中读出来,因此要定义一个容器来保存字符以及其在字符流中的位置. 为尽可能搞笑解决问题,要在O…
// 面试题50(二):字符流中第一个只出现一次的字符 // 题目:请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从 // 字符流中只读出前两个字符"go"时,第一个只出现一次的字符是'g'.当从该字 // 符流中读出前六个字符"google"时,第一个只出现一次的字符是'l'. #include <iostream> #include <limits> using namespace std; class CharStati…
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是"l". 牛客网刷题地址 思路分析 还是将数据存放在Map中,哈希表用数组occurrence实现.数组中的元素occurrence[i]和ASCII码的值为i的…
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l". 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符. 题解: 使用哈希表记录每个字母出现的次数,当选中的字母为重复时,就像后寻找未重复的字母 class Solution { public: //Inser…
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include<vector> #include<string> #include<queue> #include<stack> #include<cstring> #include<string.h> #include<deque> #incl…
[题目]请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”.当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”.如果当前字符流没有存在出现一次的字符,返回#字符. package com.exe6.offer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.u…
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l".如果当前字符流没有存在出现一次的字符,返回#字符. 思路 和前面的那道字符串中只出现一次的字符相似而不相同,前面那道是固定长度字符串,而本题是字符流,也就是会增长的,每次字符串多一个字符,就要重新判断是哪个只出现一次的…
该题目来源于牛客网<剑指offer>专题. 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是"l". 如果当前字符流没有存在出现一次的字符,返回#字符. Go语言实现: var arr [256]rune func insert(s rune) { arr[s]…
[剑指Offer]字符流中第一个不重复的字符 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是"l"…
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l". 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符. 题目分析 我们之前有讲过,一般遇到次数问题,就可以想到用哈希表来统计次数.这题也是如此. 这题算比较简单,没什么说的 此外这题还可以借助indexOf和…
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是"l". 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符. 题目地址 https://www.nowcoder.com/practice/00de97733b8e4f97a3fb5c680ee10720…
一.题目 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l". 二.思路 使用LinkedHadshMap统计字符个数,详见代码注释 三.代码 import java.util.LinkedHashMap; import java.util.Map; import java.ut…
题目: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l". 思路: 字符流:像流水一样的字符,一去不复返,意味着只能访问一次. 方法1:将字符流保存起来 通过哈希表统计字符流中每个字符出现的次数,顺便将字符流保存在string中,然后再遍历string,从哈希表中找到第一个出现…
题目描述: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l".   输入描述: 如果当前字符流没有存在出现一次的字符,返回#字符. 分析: 利用一个队列来存储只出现一次的字符,再用一个2^8的数组来保存字符出现的次数. 如果字符出现超过一次就不加入队列中, 并且如果队列中的第一…
  题目描述:   请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是"l".   输出描述:   如果当前字符流不存在只出现一次的字符,返回"#"字符.   解题思路:   本题还是相当简单的,有点类似于第34题:第一个只出现一次的字符,只不过本题是字符…
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l". 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符. 思路:模拟哈希 class Solution { public: //Insert one char from stringstream string…
题目描述: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l". 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符. 思路分析: 在插入操作中利用hash表,保存每个输入的字符出现的次数.再遍历当前的字符流,查询对应字符的hash表,为1即为所求的字符.时间空间复杂度…
在看剑指offer的时候,感觉这三个题目很像,都是用哈希表可以解决,所以把这三个题整理出来,以供复习. 剑指offer35题:第一个只出现一次的字符 题目描述:在字符串中找出第一个只出现一次的字符.如输入“abaccdeff”,则输出‘b’. 题目分析:统计字符串每个字符出现的次数,然后找出第一个只出现一次的字符.我们可以定义一个哈希表,这个哈希表的键值key是字符,value是该字符出现的次数.这样我们需要对字符串扫描两次,第一次扫描字符串时,每扫描一个字符就在哈希表对应项中把次数加1.第二次…
双端队列 -------------------------------------------------------- 时间限制:1秒 空间限制:32768K 热度指数:113070 本题知识点: 字符串 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l". 输出描…
1 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l". 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符. 2 思路和方法, C++核心代码 class Solution { public: //Insert one char from stringstr…
题目:请实现一个函数用来找出字符流中第一个仅仅出现一次的字符. 举例说明 比如,当从字符流中仅仅读出前两个字符"go"时.第一个仅仅出现一次的字符是'g'.当从该字符流中读出前六个字符"google"时,第一个仅仅出现1次的字符是"l". 解题思路 字符仅仅能一个接着一个从字符流中读出来.能够定义一个数据容器来保存字符在字符流中的位置.当一个字符第一次从字符流中读出来时,把它在字符流中的位置保存到数据容器里.当这个字符再次从字符流中被读出来时.那…
// 面试题50(一):字符串中第一个只出现一次的字符 // 题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出 // 'b'. #include <iostream> #include <string> //使用一个长度为常量的哈希表,两次遍历,时间复杂度O(n),空间复杂度O(1) char FirstNotRepeatingChar(const char* pString) { if (pString == nullptr)…
题目描述 找出字符串中第一个只出现一次的字符 如果无此字符 请输出'.' 输入描述: 输入一串字符,由小写字母组成 输出描述: 输出一个字符 输入例子: asdfasdfo 输出例子: o 思路:数组s记录出现的字母顺序.time数组记录出现的次数,每个char对应一个int型,,,所以,字母a出现的次数可以直接用time['a']表示. AC代码: #include "iostream" #include "string.h" #define MAX 201 us…
面试题35:第一个只出现一次的字符 题目:在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b.(2006年google的一道笔试题.) 分析: 首先应向确认一下是ASCII字符串,而不是Unicode字符串.用hash表求解即可,由于需要先遍历一次,时间复杂度为O(n),空间复杂度为O(1) (256个ASCII字符). 满足题意的代码如下: #include<cstdio> #include<string> #include<unordered_m…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b'. 思路 创建哈希表,键值key为字符,值value为出现次数.第一遍扫描:对每个扫描到的字符的次数加一:第二遍扫描:对每个扫描到的字符通过哈希表查询次数,第一个次数为1的字符即为符合要求的输出. 由于字符(char)是长度为8的数据类型,共有256中可能,因此哈希表可以用一…
题目: 在字符串中找出第一个只出现1次的字符,如输入“abaccdeff”,则输出b. 思路: 1.暴力遍历 从头开始扫描字符串中的每个字符,当访问某个字符时,取该字符与后面的每个字符相比较,如果没有重复的字符,那么该字符就是第一个只出现一次的字符. 时间复杂度:O(n^2) 2.Hash 通过hash表来记录字符串中每个字符出现的次数,hash表可以通过一个长度为256的数组来实现,因为字符是一个长度为8的数据类型,总共有256种可能. (注意:char数据类型的表示范围为-128-127,u…
题目: 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置.若为空串,返回-1.(书上是要求返回字符) 思路: 第一遍扫描保存下每个字符出现的次数,第二遍扫描顺序检查哪个字符出现的次数为1.没有找到合适的返回-1. 由于字符的8位的数据类型,共有256种,所以保存次数的哈希表开一个大小为256的数组即可.字符本身即为键值. 时间复杂度是O(n),空间复杂度是O(1). 代码: class Solution { public: int FirstNo…
第一个只出现一次的字符 题目描述 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置. *** 思路 新建一个对象,其中key用来存放字符,value用来存放该字符出现的次数: 第一次循环,将所有字符和对应出现的次数存放在map中,时间复杂度为0(n): 第二次循环找到value为1的字符所在的位置,并返回. 实现代码 function FirstNotRepeatingChar(str) { if (str.length == 0)…
典型并且基础的错误: class Solution { public: //Insert one char from stringstream void Insert(char ch) { ) result[ch] = index; ) result[ch] = -; index++; } //return the first appearence once char in current stringstream char FirstAppearingOnce() { char ch = '\…
include "stdafx.h" #include<iostream> #include<string> using namespace std; int main() { int num; cin >> num; while (num!=0) { num--; string str; // getline(cin,str); cin >> str; int flag = 0; for (int i = 0;i < str.le…