基础算法学习笔记

基础算法学习笔记
0

写在前面的话


本贴仅为个人在做题过程中整理,写这个贴有三个目的

  1. 给自己的回忆
    防止自己学习完了又给忘了,把做题的思路或者解题过程写下来,有空来看看
  2. 盼望大牛来指导
    初次学习思路/代码规范等方面还有很大的欠缺,希望把我的东西写出来,把自己给亮出来希望得到大家的指导与纠正(不胜感激)
  3. 大家一起学习交流---------三个臭皮匠顶个诸葛亮
    所谓仁者见仁智者见智,同一道题有不同的解法,多种思路的碰撞会得到最优的或者较为适宜的解决方法,大家也能一起开阔思路,拓宽视野,欢迎大家前来交流

阶乘计算

function factorialize(num) {
  var i=1;
  var array=[];
  while(i<=num)
    {
      array.push(i);
      i++;
    }
 var result= array.reduce((a,b)=>a*b,1);
  return result;
}
factorialize(5);

回文检查

function palindrome(str) {
  str=str.toLowerCase();
  var p1=/ |,|\.|-|\/|\_|\(|\)/gi;
  str= str.replace(p1,'');  
  str=str.toLowerCase();
  var myStr=str.split('');
  var test=(val)=>val!==' ';
  var newArray = myStr.filter(test);
  str=newArray.join('');
  myStr= newArray.reverse();
  var  myS=myStr.join('');
  if(myS===str)
  return true;
  else
    return false;
}
palindrome("0_0 (: /-\ :) 0-0");

找出最长单词

function findLongestWord(str) {
  var strArray= str.split(' ');
  var maxCallback2 = ( max, cur ) => Math.max( max, cur );
  return strArray.map( el => el.length ).reduce( maxCallback2, 0 );
}
findLongestWord("The quick brown fox jumped over the lazy dog");

找出多个数组中的最大数

function largestOfFour(arr) {
  var myMax=(val)=>Math.max.apply(null, val);
  var max= arr.map(myMax);
  return max;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);


检查字符串结尾

function confirmEnding(str, target) {
  // return str.substr(str.length-target.length,target.length)===target?true:false;
  var resultStr= str.substr(str.length-target.length,target.length);
  var result=resultStr===target?true:false;
  return result;
}
confirmEnding("Bastian", "n");

金克斯的迫击炮
–Seek And Destroy–

function destroyer(arr) {
 var num=[];
  for(i=1;i<arguments.length;i++)
    {
      num.push(arguments[i]);
    }
 var result= arr.filter(function(val){
   return num.indexOf(val)<0;
  });
  return result;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);

凯撒密码
– Caesars Cipher–

function rot13(str) { 
  var charCode=[];
  //将所有的字符转为十进制编码数组
  for(i=0;i<str.length;i++)
    {
      charCode.push(str.charCodeAt(i));
    }
   //使用map遍历数组,并进行字符位置移动,右移13位,非字母字符不进行处理
   var result=  charCode.map(function(val){
    if(val>=65&&val<=90)
      {
        val=val+13;
       //当字符编码超出字母编码范围时进行矫正即-90+65,使其返回到字符编码范围
       val=  val>90?(val-26):val;
       return String.fromCharCode(val);
      }
  return String.fromCharCode(val)
  });
  return result.join('');
}
rot13("SERR PBQR PNZC");

3赞