跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

C++ 查找字符串中第一个只出现一次的字符

给定多个测试用例的字符串,要求找出每个字符串中第一个仅出现一次的字符。由于输入规模较大,建议使用 scanf 和 printf 进行快速输入输出。解决方案采用哈希数组统计字符频次,遍历字符串找到计数为 1 的第一个字符即可。时间复杂度为 O(N)。

奶糖兔发布于 2017/12/25更新于 2026/10/2384 浏览
C++ 查找字符串中第一个只出现一次的字符

题目描述

正在挑战一个 CrackMe 的你,把需要填写的前面几位密码都正确猜出了,可是这最后一位密码,好像藏得有点深。CrackMe 的作者还挑衅般的在里面藏了个.tar.gz 文件,解压缩出来,里面写道:你要的最后一个字符就在下面这个字符串里,这个字符是下面整个字符串中第一个只出现一次的字符。(比如,串是 abaccdeff,那么正确字符就是 b 了)然而下面给出来的字符串好像太长太长了,单靠人力完全无法找出来。于是,你需要写一个程序代劳了。输入文件体积较大,请使用一些快速的输入输出手段,不推荐使用 cin/cout,对 Java 并不推荐使用 Scanner 直接读写。

输入描述

第一行,一个正整数 T(T≤20),表示输入数据组数。之后 T 行,每行一个字符串 S。(1≤S 的长度≤1000000,保证字符串中出现的字符的 ASCII 码在 [0x21,0x7F) 范围内,即均为可显示的非空白符,同时保证一定有解)

输出描述

一共 T 行,每行一个字符 C,表示所给的相应字符串中第一个只出现一次的字符。

示例

输入 2 abaccdeff testonline

输出 b s

主要难点在于,连续输入,利用 scanf 的嵌套来实现:

#include <stdio.h>
#include <cstdlib>
#include <string>
#include <cstring>

int main() 
{
    char input[1000000];
    int m;
    int len;
    char hush[256]={0};

    while(scanf("%d",&m)!=EOF){
        for(int n=0;n<m;n++){
            memset(hush,0,sizeof(hush));
            scanf("%s",input);
            len=strlen(input);
            for(int i=0;i<len;i++){
                hush[input[i]]++;
            }
            for(int i=0;i<len;i++){
                if(hush[input[i]]==1){
                    printf("%c\n",input[i]);
                    break;
                }
            }
        }
    }
    return 0;
}

目录

  1. 题目描述
  2. 输入描述
  3. 输出描述
  4. 示例

更多推荐文章

查看全部
  • C++ 入门:一维数组基础与实战
  • Git 原理与使用进阶:远程协作、标签管理及企业级开发模型
  • Python AI 大模型部署指南:本地运行、API 服务及 Docker 封装
  • 无人机远程身份识别:开源 RemoteID 部署实战
  • C++ 移动语义与右值引用详解
  • DeepSeek-R1 大模型基于 MS-Swift 框架的部署、推理与微调实战
  • Java 动态代理核心原理与实战对比
  • DeepSeek-R1 大模型基于 MS-Swift 框架部署与微调实践
  • AI 核心概念解析:Skill、MCP 与 Function Call
  • Java 基础实训:HelloWorld 输出与命令行参数处理
  • 前端与服务器时间同步方法及 Vue3 实现示例
  • 滑动窗口算法详解:高效解决子数组与子串问题
  • OpenVLA 模型微调与机器人平台部署实战
  • 前端国际化最佳实践指南
  • Ubuntu 磁盘空间与分区查看命令整理
  • 工作四年被辞退:程序员的职业反思与学习复盘
  • Llama-2-7b 在昇腾 NPU 上的六大核心场景性能基准
  • 高校计算机课程改革:引入 AIGC 实操教学
  • 特斯联获 20 亿融资,聚焦 AI+IoT 与模型系统落地路径
  • 大模型数据建设:工程化视角与策略实践

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online