【算法】持续更新....

96 阅读1分钟

简单算法

1.找出字符串中第一个只出现一次的字母

   var str = 'eerrtrefffp'
   function fun(str) {
    var arr = [], arr1 = []
    arr = str.split('')
    arr.forEach(function (item) {
    var jj = str.split(item);
    var num = str.split(item).length - 1
   })
  if (!arr1.length == 0) {
    console.log(arr1[0])
  } else {
    console.log('没有符合条件的值')
  }
}
fun(str)

2.根据数组arrA对新数组进行排序

   var arrA = ['one', 'two', 'three', 'four'];
   var new_array = ['three', 'one', 'four'];
   for (item of arrA) {
    var idx = new_array.indexOf(item);
    if (idx != -1) {// 找到的情况
    new_array.splice(idx, 1); // 先删除该元素
    new_array.push(item);// 再从尾部追加进去
  }
}
console.log(new_array);

3.用递归的方式求1-100的和

   function add (sum,start) {
     sum+=start;
     start++;
     if(start > 100) {
      console.log(sum);
      return sum;
    }
   else {
     add(sum,start);
   }
}
add(0,1)

4。数组的并交差集

   let a = [101,201,601,201]
   let b = [201,301,801]

并集

   let arr = a.concat(b);
   let result = [...new Set(arr)]  // 去重
   console.log(result);

交集

    let intersection = a.filter(v => b.includes(v)) // [201]
    let result = [...new Set(intersection)]  // 去重
    console.log(result);

差集

   let result = a.concat(b).filter(v => !a.includes(v) || !b.includes(v))
   console.log(result);

5.给你一个整数 x ,如果x 是一个回文整数,返回 true ;否则,返回 false 

   var isPalindrome = function(x) {
    let num1 = x.toString();
    let num2 = num1.split("").reverse().join("");
    // split() 是字符串的方法,将字符串转成字符串数组 ['1','2','3']
    // reserve() 是数组的方法, 将数组进行翻转为 ['3','2','1']
    // join()  是数组方法, 将数组变为字符串 "321"
    if(num1 === num2) {
        return true
    }else {
        return false
    }
};

console.log(isPalindrome(123))

中等算法

1.版本号比较

比较一组版本号,将其按从小到大的顺序排列(注意不要更改原数组的顺序)

   const versions = ["2.1.0", "1.5", "2", "1.1.999.1.2.3", "0.10.0"];
   function versionSort(versions) {
     let vAfterSplit = []; // 这是个二维数组
     for (let i = 0; i < versions.length; i++) {
     vAfterSplit.push(versions[i].split('.'));
   }
    console.log(vAfterSplit);
    //排序
    vAfterSplit.sort();
    console.log(vAfterSplit);
   //将二维数组中的每个元素拼接回去,然后返回
    let ret = []; // 这个是个一维数组
    for (v of vAfterSplit) {
     ret.push(v.join('.'));
  }
   return ret;
}
console.log(versionSort(versions));