js实现:在字符串中找出第一个只出现一次的字符
描述:
给出一个字符串,找出第一个只出现一次的字符。
样例:
对于aabc, b为第一个只出现一次的字符.
对于abaccdeff, b为第一个只出现一次的字符.
思路分析:
可以用对象保存字符出现的次数。
代码模板:
const firstUniqChar = function(str) {};代码:
const firstUniqChar = function(str) {
str = [...str];
let num = str.length; // 保存遍历次数
let obj = {}; // 保存被删元素
for (let i = 0; i < num; i++) {
let item = str.splice(0, 1)[0]; // 删除第一个值
if (str.indexOf(item) === -1 && obj[item] === undefined) {
// 当前数组中没有 并且对象中也没有
return item; // 找到
} else {
obj[item] = item; // 出现的字符串,用对象保存起来。
}
}
};
console.log('输出:', firstUniqChar('abaccdeff'), firstUniqChar('aabc'));2、indexOf 的第二个参数,从当前值往后搜索,并查找之前已经查过的字符。想起了indexOf的第二个参数,省了一步删除的操作。
const firstUniqChar = function(str) {
str = [...str];
let obj = {};
for (let [index, key] of str.entries()) {
if (str.indexOf(key, index + 1) === -1 && obj[key] === undefined) {
// 跳过这个元素,当后面没有 并且前面也没有
return key; // 找到
} else {
obj[key] = key; // 前面出现过 存起来
}
}
};
console.log('输出:', firstUniqChar('abaccdeff'), firstUniqChar('aabc'));3、记录字符出现的次数,遍历字符串,第一个只出现一次的字符,就是要找的值。
const firstUniqChar = function(str) {
var obj = {}; // 用对象
for (var i = 0; i < str.length; i++) {
var code = str.charCodeAt(i);
// 记录出现的次数
if (obj[code] == undefined) {
obj[code] = 1;
} else {
obj[code]++;
}
}
for (var i = 0; i < str.length; i++) {
// 遍历字符串出现的顺序(保证第一次出现重复),当出现为1时,即找到
if (obj[str.charCodeAt(i)] == 1) {
return str.charAt(i);
}
}
return null;
};原文来源:http://obkoro1.com/2018/10/27/算法-第一次只出现一次的字符/
本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!