📅  最后修改于: 2023-12-03 15:27:24.810000             🧑  作者: Mango
在 JavaScript 中,有时候我们需要找到一个字符串中的第一个非重复字符。这个问题看起来很简单,但实际上它的解决方法需要仔细考虑。
一种解决方法是先将字符串转化为数组,并使用对象来存储每个字符出现的次数。然后再遍历该数组,找出第一个只出现一次的字符。
代码片段如下:
function firstNonRepeatingChar(str) {
var arr = str.split("");
var charCount = {};
for (var i = 0; i < arr.length; i++) {
if (charCount[arr[i]]) {
charCount[arr[i]]++;
} else {
charCount[arr[i]] = 1;
}
}
for (var j = 0; j < arr.length; j++) {
if (charCount[arr[j]] === 1) {
return arr[j];
}
}
return null;
}
另一种解决方法是使用字符串的 indexOf 和 lastIndexOf 方法。从字符串的第一个字符开始遍历,使用 indexOf 方法查找该字符是否在字符串中存在,如果存在,再使用 lastIndexOf 方法查找该字符在字符串中最后一次出现的位置。
如果 indexOf 和 lastIndexOf 返回的相同,则说明该字符只在字符串中出现了一次。
代码片段如下:
function firstNonRepeatingChar(str) {
for (var i = 0; i < str.length; i++) {
if (str.indexOf(str[i]) === str.lastIndexOf(str[i])) {
return str[i];
}
}
return null;
}
下面是使用示例:
var str = "leetcode";
console.log(firstNonRepeatingChar(str)); // "l"
以上两种方法都可以解决查找一个字符串中的第一个非重复字符问题。第一种方法使用了数组和对象,第二种方法使用了字符串的 indexOf 和 lastIndexOf 方法。具体使用哪种方法取决于个人爱好和根据具体情况做出的决策。