C++ 字符串中的第一个唯一字符 - 力扣(LeetCode)

devtools/2024/10/18 14:17:28/

点击链接即可查看题目:387. 字符串中的第一个唯一字符 - 力扣(LeetCode)

一、题目

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

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

 二、解题思路以及代码

        由于小写字母一共有26个,所以利用ASCII码值来创建一个整形数组count,来保存对应ASCII码值出现的次数

        比如:假设str[1] = 'b  ‘a’的ASCII码值是97,那么count[ str[ 1 ] - 'a' ],也就是count[ 1 ]对应的是b出现的次数

        所以遍历一次字符串就可以得到每个ASCII码值出现的次数,在遍历一次字符串,第一个ASCII码值所对应计数数组的值为1,就是第一个只出现一次的字符。

class Solution {
public:int firstUniqChar(string s) {int count[26] = {0};for(int i = 0; i < s.size(); i++){count[s[i] - 'a'] += 1;}for(int i = 0; i < s.size(); i++){if(1 == count[s[i] - 'a'])return i;}return -1;}
};方法二:
/*
*思路:
* 1. 分别对字符串进行正序查询和反序查询
* 2. 如果所查询的字符下标相等,说明此字符只出现了一次
*/
class Solution {
public:int firstUniqChar(string s) {for(int i=0; i<s.size(); ++i){int index = s.find(s[i]);int reverse_index = s.rfind(s[i]);  if(index == reverse_index)return i;}return -1;}
};

http://www.ppmy.cn/devtools/115296.html

相关文章

Gnu Radio抓取WiFi信号,流程图中模块功能

模块流程如图所示&#xff1a; GNURadio中抓取WiFi信号的流程图中各个模块的功能&#xff1a; UHD: USRP Source&#xff1a; 使用此模块配置USRP硬件进行信号采集。设置频率、增益、采样率等参数。Complex to Mag^2&#xff1a; 将复数IQ数据转换为幅度的平方。Delay&#xf…

系统架构设计师 大数据架构篇一

&#x1f310;大数据架构 大数据处理系统分析 &#x1f50d; 大数据处理系统三大挑战 &#x1f680; 非结构化数据处理&#xff1a;如何处理非结构化和半结构化数据。复杂性与不确定性&#xff1a;大数据复杂性、不确定性特征描述的刻画方法和大数据的系统建模。异构性影响&…

C语言中的信号量、进程同步与互斥、线程同步与互斥详解

文章目录 信号量的基本概念信号量的基本操作信号量的使用场景C语言中使用信号量一&#xff0c;信号量相关的函数示例代码解释&#xff1a; 二、进程同步与互斥1. 进程同步的方式&#xff1a;信号量示例代码&#xff1a;使用信号量进行进程同步解释&#xff1a;2. 进程互斥的方式…

PL/SQL程序设计入门

PL/SQL程序设计 PL/SQL起步鼻祖&#xff1a;hello World语法分析声明部分举例 应用举例 PL/SQL 起步鼻祖&#xff1a;hello World 先举个例子&#xff0c;用PL/SQL打印输出hello world declarev_string varchar2(20); beginv_string:hello world;dbms_output.put_line(v_str…

Oracle发送邮件功能:配置自动化发信指南?

Oracle发送邮件服务设置方法&#xff1f;怎么用Oracle数据库发信&#xff1f; Oracle数据库作为企业级应用的核心&#xff0c;其内置的发送邮件功能为企业提供了强大的自动化工具。AokSend将详细介绍如何配置Oracle发送邮件功能&#xff0c;以实现自动化发信&#xff0c;从而提…

Vue使用axios二次封装、解决跨域问题

1、什么是 axios 在实际开发过程中&#xff0c;浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。从 Vue.js 2.0 版本之后&#xff0c;官方推荐使用 axios 来实现 Ajax 请求。axios 是一个基于 promise 的 HTTP 客户端。 关于 promise 的详细介…

TCP 和 UDP 协议的区别?

参考TCP 和 UDP的区别_tcp和udp的区别-CSDN博客

C语言习题~day35

1. int f(int x){ return ((x>2) ? x*f(x-1) : 3); } int i; if(f(2)) 执行如上函数后. i的值为&#xff08;&#xff09; A.30 B.无限递归 C.9 D.2160 先计算内层的f(2)&#xff0c;因为 2 不大于 2&#xff0c;所以返回 3&#xff0c;即f(2)3。 然后计算f(f(2))…