zoukankan      html  css  js  c++  java
  • 去重除了indexOf的其他方法(使用对象Key的方法)及统计重复次数

    1、去重:

      法1:使用数组IndexOf去重

      法2:使用对象Key:

     

    <script>
    
    var arr1 = [1,13,24,11,11,14,1,2];
        let unique = function(arr) {  
            let hashTable = {};
            let data = [];
            for(let i=0,l=arr.length;i<l;i++) {
                alert(!hashTable[arr[i]]);
                if(!hashTable[arr[i]]) {
                    hashTable[arr[i]] = true;
                    data.push(arr[i]);
                }
            }
            console.log(hashTable);
        return data;
        }
        console.log(unique(arr1));
    </script>

    2、找出字符串中出现次数最多的字符及显示次数

      法1、使用indexOf循环

        

    //var str = "ssraetadsdafaerasssssdajigaf";
            var str = "fffffff";
            var strr = "";
            var ci = 0;
            var Lastname = "";
            var Lastci = 0;
            var ind = 0;
            var flag1 = 0;
            for(var i = 0;i<str.length;i++){
                // console.log(str.charAt(i));
                // console.log(strr);
                if(strr.indexOf(str.charAt(i))!=-1){
                    //alert(strr.indexOf(str.charAt(i)));
                    continue;
                }
                //不加这个判断运行166次,加上以后运行38次
    
            
            
    
                v1 : for(var j = 0;j<str.length+1;j++){
                    var indd = str.indexOf(str.charAt(i),ind);
                    ind = indd+1;
                    flag1++;
                    if(indd == -1){
                        ci = j;
                        ind = 0;
                        if(ci>=Lastci){
                            Lastci = ci;
                            Lastname = str.charAt(i);
                        }
                        break v1;
                    }    
                }
                strr += str.charAt(i);
            }
            console.log("运行次数"+flag1);
            console.log("出现最多的字母"+Lastname);
            console.log("出现最多的次数"+Lastci);
    //循环次数为arr.length+1,否则会影响类似ffffff这种字符串的判断。
     

      法2:使用对象key值的方法

    //法2:使用对象key值实现
            function findMaxDuplicateChar(str) {  
                if(str.length == 1) {
                    return str;
                }
                let charObj = {};
                for(let i=0;i<str.length;i++) {
                    if(!charObj[str.charAt(i)]) {
                        charObj[str.charAt(i)] = 1;
                    }else{
                        charObj[str.charAt(i)] += 1;
                    }
                        }
                let maxChar = '',
                maxValue = 1;
                for(var k in charObj) {
                    if(charObj[k] >= maxValue) {
                        maxChar = k;
                        maxValue = charObj[k];
                    }
                }
                    return maxChar;
            }
     
  • 相关阅读:
    KMP模板
    洛谷 [P2701] 巨大的牛棚
    浅谈用极大化思想解决最大子矩阵问题
    洛谷 [P1578] WC2002 奶牛浴场
    洛谷 [P1040]加分二叉树
    洛谷 [P1220] 关路灯
    清北学堂复习笔记
    一些比较实用的网站
    图论模板
    一些应该注意的问题
  • 原文地址:https://www.cnblogs.com/qdcnbj/p/8548000.html
Copyright © 2011-2022 走看看