Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述
- 给定一个字符串
s,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回-1。 - 示例 1:
- 输入:s = "leetcode"
- 输出: 0
- 示例 2:
- 输入:s = "loveleetcode"
- 输出: 2
- 示例 3:
- 输入: s = "aabb"
- 输出: -1
- 提示:
1 <= s.length <= Math.pow(10, 5)s只包含小写字母
二、思路分析:
- 要求找到第一个不重复的字符,大概率要循环遍历字符串
- 首先将给定的字符串转化为数组,js里面的数组遍历还是比较方便的
- 然后遍历数组,判断遍历的当前项是不是在数组中唯一,如果是,返回当前项的下标,如果不是,遍历下一个,直到整个数组查找玩,没有就返回-1
- 判断当前项是否唯一
- 一种就利用数组的
indexOf和lastIndexOf方法来判断,只遍历一次
- 一种就利用数组的
三、AC 代码:
function firstUniqChar(s: string): number {
if(s.length === 1) return 0;
let strArr = s.split('');
for(let i = 0; i < strArr.length; i++){
if(strArr.indexOf(strArr[i]) === strArr.lastIndexOf(strArr[i])){
return i
}
}
return -1
};
四、总结:
- 需要注意一下数组长度为
1的特殊情况,这样是必不可能出现重复项的 - 这种应该代码比较少吧,题解区看了其他大佬的代码,感觉比这多一些,还有其他简便的方法,感兴趣可以去题解区看看