当前位置: 首页 > 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_limits<int>::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.jsqmd.com/news/839540/

相关文章:

  • C++ 列表初始化容器
  • 如何彻底清理Mac应用残留:免费开源的专业级系统优化工具完全指南
  • Android Studio 5分钟快速汉化指南:免费中文插件完整使用教程
  • 【Nanobot】README09_LEVEL4 添加新聊天渠道
  • Ultimate ASI Loader:Windows游戏插件加载终极指南,轻松实现零风险游戏修改
  • 3步实现微信聊天记录永久备份:WeChatExporter完整解决方案
  • 逃跑路线【牛客tracker 每日一题】
  • 告别玄学调试:用示波器和抓包工具搞定ARM ast1520与RTL8367的MDIO通信
  • Windows文件管理难题:如何让APK文件显示原生图标?
  • 2026年武汉办公室空调深度测评:如何为你的办公空间匹配最佳方案? - 速递信息
  • 晶晨T972嵌入式主板开发指南:从硬件选型到量产部署
  • 2026年全国人力资源咨询公司哪家好 专注落地服务 口碑良好的专业服务机构 - 深度智识库
  • MASA模组汉化包终极指南:快速解决Minecraft英文界面问题
  • WinForm上位机实战:5分钟用C#连接西门子PLC(Modbus TCP,含仿真环境搭建)
  • Windows平台防撤回利器:RevokeMsgPatcher深度技术解析与实战指南
  • SteamVR Unity插件终极指南:5分钟快速配置VR应用的完整教程
  • CSS 伪类完全指南
  • 2026海南自贸港税务服务市场调研:一份来自海南的市场侧记 - 速递信息
  • 【简单】一行代码求两个数的最大公约数-Java
  • 2026年帝舵中国区售后服务网络升级全流程记录(附最新电话及地址) - 亨得利官方服务中心
  • 上海创赢建筑科技:口碑好的上海围挡销售公司 - LYL仔仔
  • openclaw用户如何快速接入taotoken扩展ai能力
  • Grafana 9.5 版本启动报错 panic: runtime error 怎么解决?
  • 家庭日常水果挑选实用指南:兼顾口感、保鲜与营养留存 - 奔跑123
  • 在Windows上安装APK的完整指南:告别模拟器,拥抱原生体验
  • WeChatExporter:基于iOS备份解析的微信聊天记录数据提取架构
  • 【困难】丟棋子问题-Java:解法五
  • STM32 GPIO八种模式详解:从硬件原理到实战配置
  • 2026苏州搬家公司推荐,大件搬运,同城搬家,长短途搬家,公司搬家公司优选指南! - 品牌鉴赏师
  • DLSS版本切换终极指南:一键解锁游戏性能新境界