当前位置: 首页 > news >正文

字符流中第一个只出现一次的字符-C++

分享一个大牛的人工智能教程。零基础通俗易懂风趣幽默希望你也加入到人工智能的队伍中来请轻击人工智能教程​​​​​​https://www.captainai.net/troubleshooter// 面试题50二字符流中第一个只出现一次的字符 // 题目请实现一个函数用来找出字符流中第一个只出现一次的字符。例如当从 // 字符流中只读出前两个字符go时第一个只出现一次的字符是g。当从该字 // 符流中读出前六个字符google时第一个只出现一次的字符是l。 #include cstdio #include vector #include limits using namespace std; class CharStatistics { public: CharStatistics() : index(0) { for (int i 0; i 256; i) occurrence[i] -1; } void Insert(char ch) { if (occurrence[ch] -1) occurrence[ch] index; else if (occurrence[ch] 0) occurrence[ch] -2; index; } char FirstAppearingOnce() { char ch \0; int minIndex numeric_limitsint::max(); for (int i 0; i 256; i) { if (occurrence[i] 0 occurrence[i] minIndex) { ch (char)i; minIndex occurrence[i]; } } return ch; } private: // occurrence[i]: A character with ASCII value i; // occurrence[i] -1: The character has not found; // occurrence[i] -2: The character has been found for mutlple times // occurrence[i] 0: The character has been found only once int occurrence[256]; int index; }; // 测试代码 void Test(const char *testName, CharStatistics chars, char expected) { if (testName ! nullptr) printf(%s begins: , testName); if (chars.FirstAppearingOnce() expected) printf(Passed.\n); else printf(FAILED.\n); } int main(int argc, char *argv[]) { CharStatistics chars; Test(Test1, chars, \0); chars.Insert(g); Test(Test2, chars, g); chars.Insert(o); Test(Test3, chars, g); chars.Insert(o); Test(Test4, chars, g); chars.Insert(g); Test(Test5, chars, \0); chars.Insert(l); Test(Test6, chars, l); chars.Insert(e); Test(Test7, chars, l); return 0; } // ------ Output ------ /* Test1 begins: Passed. Test2 begins: Passed. Test3 begins: Passed. Test4 begins: Passed. Test5 begins: Passed. Test6 begins: Passed. Test7 begins: Passed. */
http://www.zskr.cn/news/1310409.html

相关文章:

  • 3个认知升级:重新定义魔兽世界宏编程的操作范式
  • 构建Telegram与私有AI模型桥接器:从原理到工程实践
  • STM32 串口通信:串口的接收和发送详解
  • d2s-editor:暗黑破坏神2存档编辑器的现代化Web解决方案
  • 如何让Windows资源管理器完美预览iPhone照片:HEIC缩略图插件全解析
  • 如何使用witr快速定位占用端口的神秘进程?完整指南
  • Oto 核心架构深度解析:Context 与 Player 的设计哲学
  • 内容创作团队如何利用多模型API提升图文生成效率
  • 告别单调终端:250+ Xshell配色方案让你的命令行焕然一新
  • 半导体IPO热潮:低营收高专利企业如何重塑资本估值与技术壁垒
  • 从手动点击到Python驱动:探索PyFluent如何重新定义CFD工作流自动化
  • FanControl终极指南:告别BIOS限制,打造个性化风扇控制方案
  • jQuery TreeTable:在表格中优雅展示树形结构的完整指南
  • VCS仿真总失败?手把手教你用TMAX的CPV功能快速定位ATPG Pattern问题
  • Hotkey Detective:3分钟定位Windows热键冲突的神器
  • 从零搭建到日常调试:一份给新手的 Kafka 命令行操作全流程指南
  • Freeplane思维导图终极指南:100+专业模板让你的思考效率翻倍
  • 智能报警器语音芯片选型与硬件设计实战指南
  • Windows变身AirPlay 2接收器:打破苹果生态壁垒的终极解决方案
  • Cursor AI编程助手扩展包:定制化规则提升代码生成质量与效率
  • 终极AMD Ryzen硬件调试指南:5分钟掌握SMU Debug Tool实战技巧
  • 实测,这个小程序真的可以免费压缩图片?10MB 一秒压到 1.6MB
  • MDX-M3-Viewer深度解析:浏览器端游戏模型渲染的全新范式
  • 2026年GEO优化合规测评:策略效果指标排名出炉 - 羊城派
  • 解决方案:如何3步自动化生成黑苹果EFI配置
  • 【ChatGPT SWOT分析黄金模板】:20年AI战略顾问亲授——5步生成高信效度SWOT报告(附可落地Prompt库)
  • 小米Tag防丢器深度解析:BLE与UWB双技术路径如何重塑寻物体验
  • 如何高效管理光盘镜像:WinCDEmu虚拟光驱专业使用指南
  • 三步解锁iPhone激活锁:AppleRa1n离线工具全攻略
  • 猫抓浏览器扩展:如何快速嗅探并下载网页视频音频资源的完整指南