字符串中的第一个唯一字符
字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回-1
。
示例#
s = "leetcode"
返回 0
s = "loveleetcode"
返回 2
题解#
/**
* @param {string} s
* @return {number}
*/
var firstUniqChar = function(s) {
const hashTable = Object.create(null);
Array.prototype.forEach.call(s, v => {
if(hashTable[v] === void 0) hashTable[v] = 1;
else ++hashTable[v];
})
const n = s.length;
for(let i=0;i<n;++i){
if(hashTable[s[i]] === 1) return i;
}
return -1;
};
思路#
我们可以对字符串进行两次遍历,在第一次遍历时,我们使用哈希映射统计出字符串中每个字符出现的次数,在第二次遍历时,我们只要遍历到了一个只出现一次的字符,那么就返回它的索引,否则在遍历结束后返回-1
即可。当然此处是使用的哈希表进行存储,如果使用两个数组进行存储的话可能会快一些,哈希表要计算HashCode
,然后再按照HashCode
取索引,当字符串比较长的时候可能还会引起Hash
表底层数据的扩容从而产生ReHash
,同时Hash
碰撞也是要考虑的成本。首先建立一个哈希表,直接构建没有原型的对象即可,之后使用数组的原型方法forEach
循环这个字符串,构建哈希表,在键不存在时将此键的值设置为1
,否则就自增值,之后获取字符串长度,建立循环,如果这个键在哈希表中的值为1
,则返回该值的索引,如果没找到则返回-1
即可。
每日一题#
https://Github.com/WindrunnerMax/EveryDay
参考#
https://leetcode-cn.com/problems/first-unique-character-in-a-string/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!