一本通网站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";
	}

}
相关推荐
Ayanami_Reii12 小时前
进阶数学算法-取石子游戏(ZJOI2009)
数学·算法·游戏·动态规划·区间dp·博弈论
一只小小汤圆12 小时前
已知圆弧的起点、终点、凸度 求圆弧的圆心
算法
丸码12 小时前
Java HashMap深度解析
算法·哈希算法·散列表
算法与编程之美12 小时前
Java数组动态扩容
java·开发语言·python·算法
XiaoCCCcCCccCcccC13 小时前
多路复用 select -- select 的介绍,select 的优缺点,select 版本的 TCP 回显服务器
服务器·c++
XiaoCCCcCCccCcccC13 小时前
多路复用 poll -- poll 的介绍,poll 的优缺点,poll 版本的 TCP 回显服务器
服务器·网络·c++
2301_7644413313 小时前
三维建筑非法入侵情景推演
python·学习·算法
唯道行13 小时前
计算机图形学·19 Shadings in OpenGL
人工智能·算法·计算机视觉·几何学·计算机图形学·opengl
丝斯201113 小时前
AI学习笔记整理(22)—— AI核心技术(深度学习6)
人工智能·笔记·学习
koo36414 小时前
pytorch深度学习笔记1
pytorch·笔记·深度学习