欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js常见的面试题算法

程序员文章站 2022-06-09 19:13:15
...

1.翻转字符串

function reser(str){
   return  [...str].reverse().join('')    
}

2.判断回文字符串

function  Mosl(str){
    let stri = ''
    for(let i= str.length; i>=0; i--){
      stri+= str.charAt(i)
    }
    return str === stri
 }

3.生成指定长度的字符串

function randomStr(n){
    let strr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    let str = ''
    for(let i=0; i<n; i++){
      str+= strr.charAt(Math.round(Math.random()* strr.length)) 
    }
    return str
}

4.数组去重

function deWeight(arr){
  return  [... new Set(arr)]
}

5.数组求最大值

function Max(arr){
  return Math.max(...arr)
}

6.冒泡排序

function bubbling(arr){
   for(let i=0; i<arr.length; i++){
     for(let j=0; j< arr.length - 1; j++){
       if(arr[j]> arr[j+1]){
         [ arr[j], arr[j+1]] = [ arr[j+1], arr[j]]
       }
     }
   }
   return arr
 }

7.数组排序,从小到大

function arrSort(arr){
   arr.sort((a,b)=> a-b)
   return arr
 }

8.浅复制

function copy(arr){
    let newObj = arr instanceof Array ? [] : {}
    for(let i in arr){
      newObj[i] = arr[i]
    }
    return newObj
  }

9.深复制

function deepCopy(arr){
    let newObj = arr instanceof Array ? [] : {}
    for(let i in arr){
      if( typeof arr[i] == 'object'){
        deepCopy(arr[i])
      }else{
        newObj[i] = arr[i]
      }
    }
  }
  //借助JSON实现深复制,但是它不能复制对象里面的方法
  function copy(arr){
    return JSON.parse(JSON.stringify(arr))
  }

10.删除重复的字符

function delStr(str){
   return [...new Set([...str])].join('')
}

11.两个相邻相同的字符串抵消

function tongDel(str){
   let arr = [...str]
   for(let i=0; i<arr.length; i++){
     for(let j=0; j<arr.length - 1; j++){
       if(arr[j] === arr[j+1]){
         arr.splice(j,2)
       }
     }
   }
   return arr.join('')
 }

12.删除相邻相同的字符串

function delStr(str){
   let arr = [] , newStr 
   for(let i=0; i<str.length; i++){
     if(str.charAt(i) !== newStr){
       arr.push(str[i])
       newStr = str[i]
     }
   }
   return arr.join('')
 }

13写个方法 两个数字变量相互交互值,不借助第三个变量

//方法一
 function swop(num1,num2){
     // 解构赋值
     [num1,num2] = [num2, num1]
     return {
       num1,
       num2
     }
   }
  //方法二
 function newSwop(num1,num2){
 //借助数组
   num2 = [num1, num1 = num2][0]
   return {
     num1,
     num2
   }
 }

14.统计字符串中次数最多的字母

function statistics(str){
   let arr = [...str]
   let obj = {} , num = 0 , max = 0
   for(let j=0; j<arr.length;j++){
     if(obj[arr[j]]){
       obj[arr[j]]++
     }else{
       obj[arr[j]] = 1
     }
   }
   //获取字母出现最多的次数
   num = Math.max(... Object.values(obj))
   //根据字母出现最多的次数,找到那个字母
   Object.keys(obj).find( (k)=>{
    if(obj[k] === num){
      max = k
    }
   })
   return max
}

最后说明:这只是本人自己的一些使用,有不足的地方,欢迎大家前来指正