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

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

题目

387. 字符串中的第一个唯一字符 - 力扣(LeetCode)

思路

用哈希表统计每个字符出现的次数

  • 创建一个 unordered_map<char, int>,遍历字符串,把每个字符出现的次数存进去。

再遍历字符串,找到第一个只出现一次的字符

  • 再次遍历字符串,查哈希表,如果某个字符的次数为1,返回它的下标。

如果没有,返回-1

读者可能出现的错误写法 

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

1. vector<char, int> result; 语法错误

  • 解释:

vector 是顺序容器,只能有一个类型参数,比如 vector<int> 或 vector<char>,不能像 map 那样有两个类型参数。

  • 正确用法:

如果你想统计每个字符出现的次数,应该用 unordered_map<char, int> 或者用数组 int result[26](只针对小写字母)。

2. result[e]++ 逻辑错误

  • 解释:

vector 不能用字符 e 作为下标,只有数组或 map 才能这样用。

并且 vector 的下标必须是整数,且不能自动扩容到字符的ASCII值。

  • 正确用法:
  • 如果用数组:result[e - 'a']++,前提是 result 长度为26。
  • 如果用 unordered_map:result[e]++。

3. 第二个循环遍历方式错误

  • 解释:

你写的是 for(int i = 0; i < result.size(); i++),但 result.size() 不是字符串长度,而是容器长度。

你应该遍历字符串 s,判断每个字符出现的次数是否为1。

  • 正确用法:

for(int i = 0; i < s.size(); i++) { if (result[s[i] - 'a'] == 1) return i; }

正确写法

class Solution {
public:int firstUniqChar(string s) {unordered_map<char,int> result;for(char e : s){result[e]++;}for(int i = 0;i<s.size();i++){if(result[s[i]] == 1){return i;}}return -1;}
};
http://www.xdnf.cn/news/14044.html

相关文章:

  • 一个简单的torch-cuda demo
  • Acrobat 首选项配置:从注册表到锁定机制
  • 【MPC】模型预测控制笔记 (2):约束MPC
  • C语言预处理命令详解
  • 第9章 表达式和运算符 笔记 待完善
  • 如何运营一个专业的体育比分网站
  • 2025年06月13日Github流行趋势
  • 【Photoshop】使用路径和形状制作印章
  • 基于51单片机的电机控制角度proteus仿真
  • 【IEEE/EI/Scopus检索】2025年第五届机器学习与大数据管理国际会议 (MLBDM 2025)
  • Streamlit 笔记
  • Google Drive·实现共享文件本地访问与编辑
  • sdk添加包,更新文件系统--万象奥科RK3506
  • 基于数字孪生的风光储一体化园区智能化管理解决方案
  • C++进阶—C++中的继承
  • 在云算力上使用Nginx对Gradio外链进行加速的方法
  • 趣解TensorFlow之入门篇
  • 家政维修平台实战25:工人接单
  • Could not initialize Logback logging from classpath:logback-spring.xml
  • PostgreSQL作为向量数据库
  • 论索引影响性能的一面④ 索引失踪之谜【上】
  • docker部署DNS服务并带有图形界面管理——筑梦之路
  • 【碎碎念】60秒! 卡牌游戏 60 Seconds! [特殊字符] 桌游版《求生60秒》
  • 人工智能100问☞第47问:为啥AI需要“反向传播”?
  • Spring Bean
  • aardio 继承与多态
  • 智能出入库管理系统:自动化管控平台
  • 我是如何用 Agent 编程的
  • Day01_C数据结构
  • 普通属性 vs ref 包装属性