一本通网站1130:找第一个只出现一次的字符

一开始我的想法是利用桶的思想,定义一个26大小的数组,对应字母a到z,然后遍历字符串,让数组对应位置里的值加一,最后统计出每个字母出现的次数,然后遍历arr数组,找到大小为1的,就是仅出现一次的字符。

但是发现程序还是不行。然后发现这时会出现次序问题,题目中要求的是第一次出现仅一次的。那么我们可以再遍历一遍字符串,然后找到数量为1的,自然就是第一次出现并且仅出现一次的字符了。并且题目说了字符串长度小于100000,两次都是单层循环,时间也是没什么问题的。

cpp 复制代码
#include<iostream>
using namespace std;
#include<string>
int main()
{
	string s1;
	getline(cin, s1);
	int arr[26] = { 0 };
	for (int i = 0; i < 26; i++)
	{
		arr[i] = 0;
	}
	int num = 0;
	for (int i = 0; i < s1.length(); i++)
	{
		num = s1[i] - 97;
		arr[num] += 1;
	}
	bool flag = 0;
	for (int i = 0; i < s1.length(); i++)
	{
		if (arr[s1[i] - 97] == 1)
		{
			cout << s1[i];
			flag = 1;
			break;
		}
	}
	if (!flag) {
		cout << "no";
	}

}
相关推荐
Z1Jxxx1 天前
01序列01序列
开发语言·c++·算法
丝斯20111 天前
AI学习笔记整理(42)——NLP之大规模预训练模型Transformer
人工智能·笔记·学习
坚定学代码1 天前
基于观察者模式的ISO C++信号槽实现
开发语言·c++·观察者模式·ai
汽车仪器仪表相关领域1 天前
全自动化精准检测,赋能高效年检——NHD-6108全自动远、近光检测仪项目实战分享
大数据·人工智能·功能测试·算法·安全·自动化·压力测试
ha20428941941 天前
Linux操作系统学习记录之---TcpSocket
linux·网络·c++·学习
Doro再努力1 天前
【数据结构08】队列实现及练习
数据结构·算法
AI视觉网奇1 天前
ue5 插件 WebSocket
c++·ue5
左直拳1 天前
将c++程序部署到docker
开发语言·c++·docker
凉、介1 天前
深入 QEMU Guest Agent:虚拟机内外通信的隐形纽带
c语言·笔记·学习·嵌入式·虚拟化
恒者走天下1 天前
AI智能体通讯项目(底层AI通讯协议实现)
c++