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

C++ ——— string类oj题:字符串中的第一个唯一字符

目录

题目要求

解题思路

解题代码


题目要求

给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 

示例 1:

输入: s = "leetcode"
输出: 0

示例 2:

输入: s = "loveleetcode"
输出: 2

示例 3:

输入: s = "aabb"
输出: -1

提示:

  • 1 <= s.length <= 105
  • s 只包含小写字母

解题思路

利用计数排序统计所有字符出现的次数

再次通过统计的下标和计数排序找出第一个出现的唯一字符


解题代码

class Solution
{
public:
	int firstUniqChar(string s)
	{
		int count[26] = { 0 };

		// 统计
		for (auto e : s)
		{
			count[e - 'a']++;
		}

		// 找出第一个出现的唯一字符
		for (int i = 0; i < s.size(); i++)
		{
			if (count[s[i] - 'a'] == 1)
			{
				return i;
			}
		}

		// 没找到 
		return -1;
	}
};

代码验证:

举例说明:

除了 m 之外的字符都出现了两次,那么 count 数组所对应的字符都会是 2 ,只有 m 所映射的字符会是 1 ,所以再通过 for 循环遍历只出现一次的字符,返回下标即可

代码的复杂度:

时间复杂度:两个 for 循环,是 2*N,去掉常数项,O(N)

空间复杂度:O(1)


http://www.kler.cn/a/508771.html

相关文章:

  • PHP xml 常用函数整理
  • Unity HybridCLR Settings热更设置
  • mongoose 支持https踩坑纪实
  • 第4章 Kafka核心API——Kafka客户端操作
  • PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别
  • 价值分解方法(QMIX、VDN、FACMAC、VDA2C)整理
  • 从零开始,掌握Django Web开发
  • 软件测试 —— Selenium常用函数
  • 软件测试—接口测试面试题及jmeter面试题
  • 【UE5.3】UnrealLink 安装:fix Detected compiler newer than Visual Studio 2022
  • 如何使用策略模式并让spring管理
  • MySQL无限极分类表设计:实战项目中的高效解决方案
  • npm介绍
  • 汽车免拆诊断案例 | 2007 款法拉利 599 GTB 车发动机故障灯异常点亮
  • JSON数据格式转换
  • 使用C语言实现栈的插入、删除和排序操作
  • thinkphp8.0 likeadmin 框架添加API 文档自动生成工具 apidoc支持
  • QT信号槽 笔记
  • Apache Web服务器技术指南 - 基于Kylin麒麟操作系统
  • 【1】认识思科无线控制器
  • WebSocket——推送方案选型
  • Windows 11开发深度实践:从零开始构建一个功能丰富的UWP应用
  • JavaWeb 前端基础 html + CSS 快速入门 | 018
  • kafka集群安装Raft 协议
  • 《AI语言模型的关键技术探析:系统提示、评估方法与提示工程》
  • python 利用pandas实现从CSV导出并格式化后写入.jsonl文件