剑指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的元素并将其输出。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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工具