Die erste Methode ist umständlicher und die zweite Methode einfacher
Erste Methode:
Grundidee:
1. Führen Sie zunächst die wiederholten Elemente in der Zeichenfolge zusammen und erhalten Sie die Namen der wiederholten Elemente und die Anzahl der Wiederholungen in Form von Objekten
2. Sortieren Sie nach der Anzahl der Wiederholungen jedes Elements, d. h. erhalten Sie den am häufigsten wiederholten Elementnamen und die Anzahl der Wiederholungen
Direkter Code:
<script> var str = '85skkkhj22gdg541232286oe45854664445sada2fasa51233148dskf7212772'; var res = countSort(str); //归总为对象素组 rr = sortArrayByItem(res, 'len'); //根据每一项的length属性排序 var maxCount = rr[0]; console.log('重复最多的项是:' + maxCount.item + "---重复的次数是:" + maxCount.len); //字符串重复项的归总(以对象数组的形式) function countSort(str) { var array = str.split(''); var filter = []; var result = []; //查找与tar相同的所有项,返回最终一位数组集合arr var get = function (str, tar, arr, tmp) { if (str.indexOf(tar) >= 0) { var tmp = str.slice(str.indexOf(tar) + 1); arr.push(tar); get(tmp, tar, arr, tmp); } return arr; } for (i in array) { var elm = []; var tmp; var fstr = filter.join(); //已完成归并的所用项 if (fstr.indexOf(array[i]) >= 0) continue; else { var tmp_arr = get(str, array[i], elm, tmp); //完成的一项归总 result.push({ item: tmp_arr[0] , len: tmp_arr.length }); filter.push(array[i]); } } return result; } //对象数组的排序,item代表要根据那个属性来做排序(从大到小) function sortArrayByItem(array, item) { for (var i = 0; i < array.length - 1; i++) { for (var j = i + 1; j < array.length; j++) { if (array[i][item] < array[j][item]) { var tmp = array[i]; array[i] = array[j]; array[j] = tmp; } } } return array; } </script>
Zweiter Typ:
Grundidee:
1. Kombinieren Sie jedes Element in der Zeichenfolge und wie oft es erscheint, um ein Objekt zu bilden
2. Vergleichen Sie die erhaltenen Objekte nach ihren Werten und finden Sie den größten Begriff
<script> var tt = Char('dj84dccvdda85454kk444gghg6675786fh'); console.log(tt) tt = maxC(tt); console.log(tt) function Char(str) { var uchars = {}; str.replace(/\S/g, function (l) { uchars[l] = (isNaN(uchars[l])) ? 1 : uchars[l] + 1 }) return uchars } function maxC(obj) { var maxCount = 0; var maxItem = null; for (var i in obj) { if (obj[i] > maxCount) { maxCount = obj[i]; maxItem = i; } } return { maxCount: maxCount , maxItem: maxItem }; } </script>