首页 > 其他分享 >【剑指Offer】54、字符流中第一个不重复的字符

【剑指Offer】54、字符流中第一个不重复的字符

时间:2023-07-11 23:56:19浏览次数:31  
标签:字符 第一个 Offer 54 流中 char 哈希

【剑指Offer】54、字符流中第一个不重复的字符

题目描述:

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

输出描述:

如果当前字符流不存在只出现一次的字符,返回“#”字符。

解题思路:

本题还是相当简单的,有点类似于第34题:第一个只出现一次的字符,只不过本题是字符流序列。解题思路也比较类似,将字节流保存起来,通过哈希表统计每个字符出现的次数,然后再从头遍历字符流,找到第一个次数为1的字符,就是我们要找的目标。

这里,为了简单,可以用数组代替哈希表,将字符的ASCLL码作为数组下标,字符对应出现的次数作为数组的元素进行保存。

编程实现(Java):

public class Solution {
    /*
    思路:用hashmap保存每个字符出现的次数 或者 用长度为256的数组代替哈希表
    还有一种是使用indexof和lastIndexof
    */
    String str="";
    int[] charToCount=new int[256]; //256个字符
    //Insert one char from stringstream
    public void Insert(char ch)
    {
        str+=ch;
        charToCount[ch]+=1;
    }
  //return the first appearence once char in current stringstream
    public char FirstAppearingOnce()
    {
        for(int i=0;i<str.length();i++){
            char c=str.charAt(i);
            if(charToCount[c]==1)
                return c;
        }
        return '#';
    }
}

标签:字符,第一个,Offer,54,流中,char,哈希
From: https://www.cnblogs.com/bujidao1128/p/17546316.html

相关文章

  • 1-14 编写一个程序,打印输入中各个字符出现频度的直方图
    ArchlinuxGCC13.1.1 202304292023-07-1123:25:36星期二 做了调整,只输出大小写字母共计56个字符的横向直方图,如有其他需要,自行添加。点击查看代码#include<stdio.h>#defineTRUE1#defineFALSE0intmain(){intc_in;intc_num[52];intc......
  • HJ81 字符串字符匹配
    1.题目读题HJ81 字符串字符匹配  考查点 2.解法思路 代码逻辑 具体实现publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Stringtarget=sc.nextLine();Stringsource=sc.nextLine();S......
  • 【857】R语言实现字符串操作、补零操作
    ref:AddLeadingZerostotheElementsofaVectorinR 参考代码:#数组>seq(12)[1]123456789101112#格式化打印,自动补零>sprintf("%02d",seq(12))[1]"01""02""03""04""05&......
  • LeetCode 剑指 Offer 08. 二叉树的下一个节点
    题目:二叉树的下一个节点给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。(树的后继)注意:如果给定的节点是中序遍历序列的最后一个,则返回空节点;二叉树一定不为空,且给定的节点一定不是空节点;解题思路二叉树的中序遍历:{[左子树],根节点,[右子树]}如图所示......
  • spark 的踩坑记录(二)spark 字符串截取问题
     前言接之前的spark踩坑记录,回想起当时折磨很久的一个问题,结果导致开发中花了很长时间才完全解决。主要原因为spark和java的字符串截取函数不一致导致的。主要技术框架背景介绍spark:2.4.3scala:2.11.12背景实际工作中会处理很多文本数据流,例如文章信息,评论信息等,调......
  • js中字符串的方法
    字符串的17种方法。。。。。。length:返回字符串的长度。conststr="Hello,World!";console.log(str.length);//输出13charAt(index):返回指定索引位置的字符。conststr="Hello,World!";console.log(str.charAt(4));//输出oconcat(str1,str2,...):连接两个或多......
  • 字符串转换
    ///<summary>///ushort[]转string///</summary>///<paramname="inUshort">ushort数组</param>///<returns>string字符串</returns>publicstaticstringUShortConvertToString(ushor......
  • 字符的格式化
    #请实现一个程序,实现如下需求点:#1.程序开始的时候提示用户输入学生年龄信息格式如下:#MikeMos,9;JackGreen,21#我们假设用户输入上面的信息,必定会遵守下面的规则:#学生信息之间用分号隔开(分号前后可能有不定数量的空格)#每个学生信息里的姓名和年岭之间用......
  • CF1545D-题解
    题目链接题目描述有\(n\)个人和\(k\)个间隔相同时间的时刻,每个人都向正方向做匀速直线运动。给出每个时刻(\(0\simk-1\))的所有人的坐标集合(无序),在这\(nk\)个数中有一个数是错误的,找出这个错误的数并将其改正。数据范围:\(5\len\le1000\),\(7\lek\le1000\)。加......
  • LWC 54:697. Degree of an Array
    LWC54:697.DegreeofanArray传送门:697.DegreeofanArrayProblem:Givenanon-emptyarrayofnon-negativeintegersnums,thedegreeofthisarrayisdefinedasthemaximumfrequencyofanyoneofitselements.Yourtaskistofindthesmallestpossibleleng......