算法—第一个只出现一次的字符
时间:2022-07-28
本文章向大家介绍算法—第一个只出现一次的字符,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
第一个只出现一次的字符
难度:简单
描述:
给出一个字符串,找出第一个只出现一次的字符。
样例:
对于 aabc
, b
为第一个只出现一次的字符.
对于 abaccdeff
, b
为第一个只出现一次的字符.
思路分析:
可以用对象保存字符出现的次数。
代码模板:
const firstUniqChar = function(str) {};
想一想再看答案
想一想再看答案
想一想再看答案
代码:
- 将值删除,用 indexOf 查找还有没有相同字符,并查找之前删过的字符
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'));
- 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'));
- 记录字符出现的次数,遍历字符串,第一个只出现一次的字符,就是要找的值。
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;
};
鼓励我一下:
觉得还不错的话,给我的项目点个star吧
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法