案例
先找出字符串 ‘6285837234715320355294398’ 中出现次数最多的数字及次数,然后去重后并排序
要求:
1:找到出现最多的数字和出现的次数
2:去除字符串中重复的数字
3:对去重后的字符串排序
核心算法
利用charAt() 通过索引获取值
然后遍历这个字符串
把每一个字符串都存储给对象 如果对象没有该属性就赋值1 ,如果有存在就+1,再有再+1
最后遍历对象 得到最大值和该字符
再利用冒泡排序对数组进行排序
代码
var str = '8587263747153203552943982';
//先定义空对象 存储拆分后的字符
var obj = {};
// 先遍历字符串
for (var i = 0; i < str.length; i++) {
var chars = str.charAt(i); //保存字符串里面每一个字符
//核心算法 利用charAt() 通过索引获取值
// 然后遍历这个字符串
// 把每一个字符串都存储给对象 如果对象没有该属性 就赋值1; 如果有 存在就+1
// 然后遍历对象 得到最大值和该字符
if (obj[chars]) {
obj[chars]++;
} else {
obj[chars] = 1;
}
}
var max = 0; // 定义出现次数 用来找出次数最多的
var arr = []; // 定义空数组 将每个字符填入数组
var name; //用于最后接收出现次数最多的值
// 先遍历对象 对象里面属性就是[k] 代表每一个字符
for (var k in obj) {
arr.push(k)
if (obj[k] > max) {
max = obj[k];
name = k;
}
}
console.log(max); // 最多的次数
console.log(name); // 次数最多的值 注意此值有可能是之一 如果出现多个字符 且出现最多的时候次数一样
//定义一个数组 存储和出现次数最多一样的字符
var arr1 = [];
for (key in obj) {
if (obj[key] == max) {
arr1.push(key);
}
}
console.log(arr1); //所有次数最多的值 存到数组
console.log(arr); // 原字符串里面去重后 存到数组
//冒泡排序
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length - i; j++) {
var hm;
if (arr[i] > arr[i + 1]) {
hm = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = arr[i]
}
}
}
console.log(arr); // 冒泡排序后的数组