记录金山笔试
第一题:一个任意长度字母字符串,当两个及以上辅音连在一起是无效的,可以随意修改字母位置,问可得到的有效字符串的长度最长是多少?
第二题:nums数组中是每个球员的能力值
m球员个数,比赛前两个教练会把队员分为两队(人数不要求一样,每个教练都会选择剩余球员能力最大的那个,并把他左右两边的n个队员带走,当左右人数不够n个时,就把剩余的带走,
例:m=7,n=2,nums=【1,6,7,9,2,5,3】
结果,BAAAAAB
例m=5,n=1,nums=[2,4,5,1,3]
结果:BAAAB
hanshu(nums,m,n)
function hanshu(nums,m,n){
var panduan=false
var nums1=JSON.stringify(nums)
var numCopy=JSON.parse(nums1)
var shuzu=new Array(m).fill(0)
// // 数组,人数,个数
while(nums.length>0){
panduan=!panduan
var max=getMax(nums)
var left=(max-n)>0?max-n:0
var right=(max+n)<nums.length-1?max+n:nums.length-1
var length=right-left+1
let nums2=nums.splice(left,length)
if(panduan){
// 添加A
shuzu=getResult(numCopy,nums2,"A",shuzu)
}else{
shuzu=getResult(numCopy,nums2,"B",shuzu)
}
}
console.log(shuzu.join(''))
}
function getResult(numCopy,nums2,panduan,shuzu){
var i=0
numCopy.forEach((item,index)=>{
if(item==nums2[i]){
i++
shuzu[index]=panduan
}
})
return shuzu
}
function getMax(nums){
var max=nums[0]
var result=0
nums.forEach((item,index)=>{
max=Math.max(item,max)
if(max==item){
result=index
}
})
return result
}
第三题,没有印象了