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

C/C++语言100题练习计划 99——找第一个只出现一次的字符

名人说:博学之,审问之,慎思之,明辨之,笃行之。——《中庸》
进度:C/C++语言100题练习计划专栏,目前99/100

一、问题呈现

1.问题描述

Problem Description

给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出 no

2.输入输出

Input

一个字符串,长度小于 1100 1100 1100

Output

输出第一个仅出现一次的字符,若没有则输出 no

3.测试样例

样例1️⃣
Sample Input

abcabd

Sample Output

c

样例2️⃣
Sample Input

aabbcc

Sample Output

no

二、源码实现

#include<iostream>
#include<cstring>
using namespace std;
bool check[50],flag[50];

int main()
{
	string s;
	//输入字符串
	cin >> s;
	//循环遍历,检查是否符合条件,如何符合则标记起来
	for(int i = 0; i < s.size(); i++)
	{
		if(check[s[i] - 'a'])
		{
			flag[s[i] - 'a'] = true;
		}
		check[s[i] - 'a'] = true;
	}
	//循环判断,看标记起来的是否有符合条件的,如有则输出第一个仅出现一次的字符
	for(int i = 0; i < s.size(); i++)
	{
		if(!flag[s[i] - 'a'])
		{
			cout << s[i];
			return 0;
		}
	}
	//如果没有输出no,并输出换行
	cout << "no" <<endl;
	return 0;
}

★关于本题思路
首先,我们要输入一个字符串,然后查找到第一个只出现一次的字符,说明我们需要循环遍历的查找,以及if条件语句的判断加成,那我们具体要怎么做呢?
可以先枚举输入的字符串str每个字符(0 到 n−1),如果出现就标记check[str[i] - ‘a’]为true,然后如果枚举到一个字符它的check为true(被访问过),就把它的flag标记为true标记为不可以

然后再次枚举每个字符,如果这个字符的flag为false(且只被访问过 1 次)
那就直接输出,然后 return 0(这样就保证了是第一个而且只出现了一次)

最后,如果没有 flag 为 false 的,就输出 no。
了解了这些,可以尝试编程实现一下了。

三、测试结果

abcabd
c

--------------------------------
Process exited after 6.674 seconds with return value 0
请按任意键继续. . .

Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder)
如果对大家有帮助的话,希望大家能多多点赞+关注!这样我动力会更足哦! ღ( ´・ᴗ・` )比心

相关文章:

  • Go使用Gin+mysql实现增删改查
  • PIE-Engine:房山区洪涝灾害风险评价
  • 【我的渲染技术进阶之旅】如何编译Filament的windows版本程序?
  • 03 C++ 字符串、向量和数组
  • python 代码 C 执行
  • 字节外包凭借【ui自动化测试框架】成功进入内部编制
  • 用 Plop 加快项目相似代码生成
  • Codeforces Round #822 (Div. 2) 补题 (A、B、C)
  • 【初阶与进阶C++详解】第十六篇:AVL树-平衡搜索二叉树(定义+插入+旋转+验证)
  • 去除多重共线性的5种方法,你学废了嘛?
  • Verilog的奇技淫巧[更新中]
  • 被CTO推荐的SQL总结
  • 第八章 时序检查(下)
  • Android 10 低内存应用白名单和应用保活
  • 攻防演练中攻击队需要的安全技能第二篇
  • 分享的文章《人生如棋》
  • AHK 中 = 和 == 等比较运算符的用法
  • Angular 响应式表单 基础例子
  • Fundebug计费标准解释:事件数是如何定义的?
  • hadoop集群管理系统搭建规划说明
  • LeetCode18.四数之和 JavaScript
  • MYSQL 的 IF 函数
  • PHP的Ev教程三(Periodic watcher)
  • swift基础之_对象 实例方法 对象方法。
  • tensorflow学习笔记3——MNIST应用篇
  • windows下如何用phpstorm同步测试服务器
  • 记一次和乔布斯合作最难忘的经历
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 前端学习笔记之观察者模式
  • 如何在 Tornado 中实现 Middleware
  • 手写一个CommonJS打包工具(一)
  • 我感觉这是史上最牛的防sql注入方法类
  • 小程序button引导用户授权
  • 移动端唤起键盘时取消position:fixed定位
  • 译米田引理
  • #考研#计算机文化知识1(局域网及网络互联)
  • (1)SpringCloud 整合Python
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (arch)linux 转换文件编码格式
  • (MATLAB)第五章-矩阵运算
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (顺序)容器的好伴侣 --- 容器适配器
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (四)图像的%2线性拉伸
  • (一)SpringBoot3---尚硅谷总结
  • (转)c++ std::pair 与 std::make