剑指offer 字符流中第一个不重复的字符

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

代码:

复制代码
class Solution
{
public:
    vector<char> q;
    int sign[255]={0};
  //Insert one char from stringstream
    void Insert(char ch)
    {
        q.push_back(ch);
    }
  //return the first appearence once char in current stringstream
    char FirstAppearingOnce()
    {
        if(!sign[ q.back() ])
            sign[ q.back() ] ++;
        else
            sign[ q.back() ] ++;
        for (int i = 0; i < q.size(); i ++){
            if(sign[ q[i] ] == 1)
                return q[i];
        }
        return '#';
    }
};
复制代码

我的笔记:在类中定义两个公有变量,char类型可变数组q 和 整型数组sign用0填充。首先将每个字符流元素push_back到q数组中,并以q数组中的元素ascii码为位置记录在sign数组中,每出现一次便是其自加,最后循环判断数组中第一个值为1的元素并将其输出。

posted @   John_yan15  阅读(125)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示