美文网首页
前端算法面试题

前端算法面试题

作者: 知识分享share | 来源:发表于2020-06-13 11:52 被阅读0次

1.缓存去重

function set(arr){
 var map = {}  
 if(arr&&Array.isArray(arr)){
   for(var i=arr.length;i>=0;i--){
       if(arr[i] in map){
           arr.splice(i,1)
       }else{
           map[arr[i]]=true
       }
   }
 }
 return arr
}

2.用逗号没三位切割一次数字,不考虑小数,负数

var arr=[]
function main(num){
    if(num===null)return
    var s = parseInt(num).toString()
    ss(s)   
}
function ss(s){
    if(s.length>3){
        arr[arr.length]=s.slice(-3)
        ss(s.slice(0,-3))
    }else{
        arr[arr.length]=s
    }
}
main(123456789)
console.log(arr.reverse().join(","))

3.无重复子串

function StrLen(str){
   var strbak=''
   var result=1
   var len = str.length
   for(var i = 0;i < len; i++){
       var strcurr = str.charAt(i)
       var index = strbak.indexOf(strcurr)
       if(index === -1){
           strbak=strbak+strcurr
           result=result<strbak.length?strbak.length:result
       }else{
           strbak=strbak.substr(index+1)+strcurr
       }
   }
   return result
}
console.log(StrLen("abcbb"))

4.大数相加

function func(){
    var a='123123231231234444435'
    var b='4342356556455454543'
    var n1=a.length
    var n2=b.length
    for(let i=0;i<Math.max(n1,n2)-Math.min(n1,n2);i++){
        if(n1>n2) b='0'+b
        if(n1<n2) a='0'+a
    }
    a=a.split('').reverse()
    b=b.split('').reverse()
    var n=Math.max(n1,n2)
    var result=Array.apply(this,Array(n)).map((item,i)=>{
        return 0;
    })
    for(let k=0;k<n;k++){
        var temp=parseInt(a[k])+parseInt(b[k])
        if(temp>9){
            result[k]+=temp-10
            result[k+1]=1  
        }else{
            result[k]+=temp
        }
    }
    console.log(result.reverse().join('').toString())
}
func()

5.出现次数最多的字符

var s="addddcccee"
var arr=[]
var count=0
var key=''
function reset(s){
   return  s.split("").filter((v,i,a)=>{
        return a.indexOf(v)===i
    })
}
arr=reset(s)
for(var i=0;i<arr.length;i++){
       var n = s.split(arr[i]).length-1
        if(n>count){
            count=n
            key=arr[i]
        }
}
console.log(count,key)

6.第n位是什么

var k="12313421543"
function getNum(n){
    console.log(k.charAt(n%k.length-1))
}
getNum(3)

7.解析url返回对象

function parseQueryString(url){
    var pos = url.indexOf("?")
    var obj={}
    if(pos!=-1){
        var urlstring=url.slice(pos+1)
        var urlArr=urlstring.split("&")
        var keyValue=[]
        for(var i=0;i<urlArr.length;i++){
            keyValue =urlArr[i].split("=")
            obj[keyValue[0]]=keyValue[1]
        }
   }
   return obj
}

8.字符串翻转,去除特殊字符

function palindrome(str){
    var str1=str.replace(/[^0-9a-zA-Z]/g,'').toLowerCase()
    var str2=str1.split("").reverse().join('')
    if(str1===str2){
        return true
    }else{
        return false
    }
}
console.log(palindrome("adfs12.,/1231SDFS"))

9.首字母大写

function palindrome(str){
    var str1=str.replace(/[^0-9a-zA-Z]/g,'').toLowerCase()
    var str2=str1.split("").reverse().join('')
    if(str1===str2){
        return true
    }else{
        return false
    }
}
console.log(palindrome("adfs12.,/1231SDFS"))

相关文章

网友评论

      本文标题:前端算法面试题

      本文链接:https://www.haomeiwen.com/subject/xhpvtktx.html