華為前端面試題


1、邏輯題

一個池子有無限多的誰,用5升的桶和6升的桶如何取3升的水?

答:5升桶取滿倒進6升桶,5升桶再裝滿倒滿6升桶,這樣5升桶剩下4升水

把6升桶的水倒掉,再把5升桶的4升水倒進6升桶,用5升桶取滿倒滿6升桶,這樣5升桶就剩下3升水。

2、編程題

計算出字符串中出現次數最多的字符是什么,出現了多少次?

方法1:從第一個字符開始,應用正則表達式把與第一個字符相同的全部替換成空字符串,這樣字符串length變小,比較兩次的差值就是出現的次數,重復以上步驟,直到字符串為空。

function foo(str){
    var result="";
    var maxLength=0;
    var getStr="";
    while(str !== ''){
        oldStr=str;
        getStr=str.charAt(0);
        str=str.replace(new RegExp(getStr,"g"),"");
        if(oldStr.length-str.length>maxLength){
            maxLength=oldStr.length-str.length;
            result=getStr+"="+maxLength;
        }
    }
    return result;
}
foo("aaasdf");

方法2:用對象的方法,key為字符,value為個數,然后遍歷對象

function objMethod(str){
    var obj={};
    for(var i=0; i<str.length;i++){
        var char=str.charAt(i);
        if(obj[char]){
            obj[char]++;
        }else{
            obj[char]=1;
        }
    }
    console.log(obj);
    var max=0;
    for(var key in obj){
        if(max<obj[key]){
            max=obj[key];
        }
    }
    for(var key in obj){
        if(max==obj[key]){
            console.log(key+":"+max);
        }
    }
}
objMethod("asddddasaassf");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM