free-programming-books
free-programming-books copied to clipboard
String-解题: 字符串中的第一个唯一字符(NO.387)
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
- 案例:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
- 注意事项:您可以假定该字符串只包含小写字母。
面试进阶题库
解题思路
-
lastIndexOf()
方法返回调用String
对象的指定值最后一次出现的索引,在一个字符串中的指定位置fromIndex
处从后向前搜索。如果没找到这个特定值则返回-1
; ———— JavaScript 标准内置对象StringString.prototype.lastIndexOf() -
indexOf()
方法返回调用它的String
对象中第一次出现的指定值的索引,从fromIndex
处进行搜索。如果未找到该值,则返回-1
。 - 一个从开始往后,一个从后往前,如果结果相等,则返回;
- 默认返回 -1;
代码
/**
* @param {string} s
* @return {number}
*/
var firstUniqChar = function(s) {
let num = 0;
while(num<s.length){
let nextNum = num +1;
let startIndex = s.indexOf(s[num]);
let endIndex = s.lastIndexOf(s[num]);
if(endIndex == startIndex){
return num;
};
num++;
}
return -1;
};
var firstUniqChar = function(s) {
for(let i=0;i<s.length;i++){
//let reg = s.match(new RegExp(s[i],'gi'))||[]; 方法1
let newStr = (""+s).replace(s[i],"");
let reg = newStr.includes(s[i]); //方法2
if(reg == 0){
return i;
}
};
return -1;
};
- 这种效率好像比较低,执行耗时,估计是
replace
的原因,