day2:js基础->算法。
跟着b站学算法->
实现的几种思路:
- 使用map方法存储每个字符出现的次数
- 使用对象键值对的方式存储每个字符出现的次数(和map实现思路很像)
- 使用sort方法加上indexOf和lastIndexOf方法,最后出现次数减去第一个出现位置就是字符出现的次数
/**
* 使用map方法存储
* 使用对象键值存储的方法
* 使用排序+indexof和lastIndexOf方法
*/
function getMaxCount(str) {
let map = new Map();
let maxLen = 0,
maxStr = undefined;
for (let index = 0; index < str.length; index++) {
const element = str[index].charCodeAt(0);
if (!map.has(str[index])) {
map.set(str[index], 1);
} else {
map.set(str[index], map.get(str[index]) + 1);
if (map.get(str[index]) > maxLen) {
maxLen = map.get(str[index]);
maxStr = str[index];
}
}
}
return "最长字符串为:" + maxStr + ",长度为:" + maxLen;
}
function getMaxCount1(str) {
let json = {};
let maxLen = 0,
maxStr = null;
for (let index = 0; index < str.length; index++) {
const element = str[index];
// console.log(element);
if (!json[element]) {
json[element] = 1;
} else {
json[element] = json[element] + 1;
if (json[element] > maxLen) {
maxLen = json[element];
maxStr = element;
}
}
}
// console.log(json);
return "最长字符串为:" + maxStr + ",长度为:" + maxLen;
}
function getMaxCount2(str) {
let strArr = [...str].sort();
// console.log(strArr.sort());
let maxLen = 0,
maxStr = null;
for (let index = 0; index < strArr.length; index++) {
const element = strArr[index];
let fIndex = strArr.indexOf(element),
lastindex = strArr.lastIndexOf(element);
// console.log(element, fIndex, lastindex, lastindex - fIndex + 1);
if (lastindex - fIndex + 1 > maxLen) {
maxLen = lastindex - fIndex + 1;
maxStr = element;
}
}
return "最长字符串为:" + maxStr + ",长度为:" + maxLen;
}
const str = "hello javascript hello css hello you!";
// console.log(getMaxCount(str));
console.log(getMaxCount1(str));
console.log(getMaxCount2(str));
网友评论