前端-编程题-诗云

一、数组中重复次数最多的一个或多个数字

function findMostFrequentElements(arr){
    const freqMap = {};
    let maxFreq = 0;
    const result = [];

    //统计每个元素出现的次数以及次数最多元素的个数
    for(let i = 0 ; i < arr.length ; i++){
        const elem = arr[i];
        freqMap[elem] = (freqMap[elem] || 0) + 1;
        maxFreq = Math.max(maxFreq , freqMap[elem]);
    }
    for( const j in freqMap){
        if(freqMap[j] == maxFreq){
            result.push(parseInt(j))
        }
    }
    return result;
}
console.log(findMostFrequentElements([1,3,5,7,1,4,5,6]))//[1,5]

二、偶数字符串拆分成两半,判断前一半a和后一半相似,相似的条件还需有相同数目的元音(aeiouAEIOU)

function splitString(arr){
    if(arr.length%2 !== 0){
        return false;
    }
    const vowels = new Set(['a','e','i','o','u','A','E','I','O','U']);
    const halfLength = arr.length /2;
    let aHalf = 0;
    for( let i = 0;i<halfLength ;i++){
        if(vowels.has(arr[i])){
            aHalf++;
        }
    }
    let bHalf = 0;
    for(let j = halfLength; j<arr.length ; j++ ){
        if(vowels.has(arr[j])){
            bHalf++;
        }
    }
    return aHalf == bHalf;
}
console.log(splitString('book'));//true
console.log(splitString('MerryChristmas'))//false

三、数字顺序反转过来(120->21;-64->-46)

function reverseNumber(num){
    let reversed = 0;
    let sign = num >= 0 ? 1: -1;
    num = Math.abs(num);
    console.log("num",num);

    var n = num + "";
    reversed = parseInt(n.split("").reverse().join(""));
    console.log("reversed",reversed)
    return reversed*sign

}
console.log(reverseNumber(-64))//-46
console.log(reverseNumber(120))//21

四、给定一个只包括(,[,] 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合,左括号必须以正确的顺序闭合。

function isValid(arr){
    const stack = [];
    const map = {
        '(':')',
        '{':'}',
        '[':']'
    };
    for(let i = 0; i<arr.length ; i++){
        if(arr[i] === '(' || arr[i] === '[' || arr[i] === '{' ){
            stack.push(arr[i]);
        }else {
            const last = stack.pop();
            if(arr[i] !== map[last]){
                return false;
            }
        }
    }
    return stack.length === 0;
}
console.log(isValid("([)]"))//false

五、第四题的扩展,用*可以匹配任何括号

这个就不会了

#前端笔试##算法题#
全部评论
function Prime(str){ if(str.length %2 !==0){ return false } let len = str.length/2 return str.slice(0,len).match(/[aeiou]/ig).length == str.slice(len).match(/[aeiou]/ig).length }
1 回复 分享
发布于 2023-03-16 16:53 江西
过了吗
点赞 回复 分享
发布于 2023-03-22 23:19 广东
都是leetcode简单题,第二提还可以用正则来做
点赞 回复 分享
发布于 2023-03-16 16:29 江西

相关推荐

大猪蹄子哥:1-谁教你这么写教育经历的……咱都这个学历了,很多公司要看本科、硕士,Gap Year的,你啪就给一个上大26届硕士,没了。 2-那堆奖学金揉成一行放最后得了,放前面显得你没技术自信,还是那句话,对于咱这个学历直接上重点,你这上半段看起来像个大专(无恶意 3-专业技能最好点出来细化方向,你熟悉的以太网是UDP还是TCP,是千兆还是万兆等等,多种信号处理……那你倒是说两个啊,后面空着干嘛,会的干嘛不讲 4-项目经历废话太多,描述不专业(怎么还有我,我们这种词),没有数据支撑(是婴儿还是巨人看不出来)。最后如果这些是真的XX项目、比赛,最好点出来,不然更显得像自学着玩的,或者说抄的(经典复现等于我做过 5-个人总结在咱这个分段没用
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

更多
牛客网
牛客企业服务