387. 字符串中的第一个唯一字符

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

示例 1:

输入: s = “leetcode”
输出: 0
示例 2:

输入: s = “loveleetcode”
输出: 2
示例 3:

输入: s = “aabb”
输出: -1

思路:使用一个二维数组,记录每个字母出现的次数以及最后一次出现的索引。遍历字符串。
将二维数组中出现为1且出现的位置最靠前的返回。
代码如下:

class Solution {
public:int firstUniqChar(string s) {int len=s.size();int n[26][2];for(int i=0;i<26;i++){n[i][0]=0;n[i][1]=-1;}for(int i=0;i<len;i++){n[s[i]-'a'][0]++;n[s[i]-'a'][1]=i;}int ans=-1;int min=len;for(int i=0;i<26;i++){if(n[i][0]==1){ans=1;if(n[i][1]<=min){min=n[i][1];}}}if(ans==-1)return ans;return min;}
};

哈希表写法:

class Solution {
public:int firstUniqChar(string s) {unordered_map<char,int> h;for(int i=0;i<s.size();i++){h[s[i]]++;}for(int i=0;i<s.size();i++){if(h[s[i]]==1)return i;}return -1;}
};

一维数组写法:

class Solution {
public:int firstUniqChar(string s) {int n[26];memset(n,0,sizeof(n));for(int i=0;i<s.size();i++){n[s[i]-'a']++;}for(int i=0;i<s.size();i++){if(n[s[i]-'a']==1)return i;}return -1;}
};

Leetcode 387. 字符串中的第一个唯一字符相关推荐

  1. leetcode 387. 字符串中的第一个唯一字符(hash)

    给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 示例: s = "leetcode" 返回 0 s = "loveleetcode ...

  2. leetcode 387. 字符串中的第一个唯一字符(First Unique Character in a String)

    目录 题目描述: 示例: 解法: 题目描述: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 示例: s = "leetcode"返回 0. ...

  3. 2022-1-20 Leetcode 387.字符串中的第一个唯一字符

    不能用 set,会导致重复出现的字母第一个无法被更改. class Solution {public:int firstUniqChar(string s) {set<char> mySe ...

  4. 387. 字符串中的第一个唯一字符(javascript)387. First Unique Character in a String

    leetcode:https://leetcode-cn.com/problems/first-unique-character-in-a-string/ 387. 字符串中的第一个唯一字符 给定一个 ...

  5. 387. 字符串中的第一个唯一字符

    387. 字符串中的第一个唯一字符--2020.12.27 题目 思路 题目 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 示例: s = "lee ...

  6. LeetCode:387.字符串中的第一个唯一字符

    字符串中的唯一字符就是字符出现次数为1的 思路:首先一次遍历,统计出每个字符的出现次数,再遍历字符,如果字符出现个数是1,则当前字符对应的小标就是要返回的值 public class Test387 ...

  7. Python——LeetCode刷题——【387. 字符串中的第一个唯一字符】

    题目描述: 解题思路: 逐个遍历字符串中的每个字符.用字典记录在字符串中每个字符的出现次数.最后遍历字符串中每个字符,字典中该字符作为key对应的value值为1,return首个value值为1的字 ...

  8. 力扣 387. 字符串中的第一个唯一字符 C语言实现

    题目描述: 给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 .如果不存在,则返回 -1 . 题目链接 方法一:哈希表 创建一个哈希表,遍历字符串中的字符,并在哈希表中查找该字符,如 ...

  9. leetcode 巧妙解法 387. 字符串中的第一个唯一字符

    给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = "leetcode" 返回 0. s = "loveleetcod ...

最新文章

  1. 深究AngularJS——监听模型$watch
  2. 多视图几何总结——摄像机模型
  3. busybox tftp
  4. 前端学习(1542):cdn简介
  5. poj Going from u to v or from v to u? 强联通缩点+拓扑排序(或搜索)
  6. 浏览器和驱动版本对应关系
  7. 谈谈我的跳槽感想,从日资企业到互联网的转变
  8. 走进javascript——DOM事件
  9. 程序设计python_Python程序设计—车万翔
  10. Windows下搭建论坛服务器
  11. 云服务器可以用来做什么
  12. xmanager5链接linux配置,使用Xmanager连接CentOS 5.5
  13. DHCP Snooping IPSG
  14. 大数据技术之Hive------操作记录笔记
  15. 准确率、精确率、召回率、F1-measure简单总结
  16. css之overflow
  17. 一个小脚本从小说中过滤出经常出现的人名
  18. 大数据系列 | 全国职业院校技能大赛大数据应用技术赛项笔记分享-离线抽取模块
  19. 【Paper】Deep Learning for Anomaly Detection:A survey
  20. ByteBuffer解密

热门文章

  1. [NOIP] [最短路] NOIP2012Junior 文化之旅 (culture)
  2. Pytorch错误集锦
  3. mysql floor 不准确_MYSQL的floor出现报错如何解决
  4. vscode的下载与安装教程
  5. 用开源力量抗击新冠疫情!腾讯作为创始成员加入Linux基金会公共卫生计划
  6. 小船过河(贪心算法)
  7. JAVA全栈工程师必学具备怎样的知识体系?
  8. 程序员到底应该学什么?!
  9. 2018中国汽车企业排行榜TOP10
  10. SSM实训:11、页面插件集成