zoukankan      html  css  js  c++  java
  • FreeCodeCamp 前端初级算法(个人向)

    freecodecamp 初级算法地址戳这里

    Reverse a String

    翻转字符串

    1 function reverseString(str) {
    2   str=str.split("").reverse().join("");
    3   return str;
    4 }
    5 
    6 reverseString("hello")

    Factorialize a Number

    计算一个整数的阶乘

     1 function factorialize(num) {
     2   if(num>1){
     3     num=num*factorialize(num-1);
     4   }else{
     5     num=1;
     6   }
     7   return num;
     8 }
     9 
    10 factorialize(5);

    Check for Palindromes

    如果给定的字符串是回文,返回true,反之,返回false

     1 function palindrome(str) {
     2   // Good luck!
     3   var str1=str.toLowerCase().replace( /[()s.,/_-]/g,"" );
     4   var str2=str1.split("").reverse().join("");
     5   return str1==str2;
     6 }
     7 
     8 palindrome("eye");

    Find the Longest Word in a String

    找到提供的句子中最长的单词,并计算它的长度。

     1 function findLongestWord(str) {
     2   var arr=str.split(" ");
     3   var max=0;
     4   for(let a of arr){
     5     max=a.length>max?a.length:max;
     6   }
     7   return max;
     8 }
     9 
    10 findLongestWord("The quick brown fox jumped over the lazy dog");

    Title Case a Sentence

    确保字符串的每个单词首字母都大写,其余部分小写。

     1 function titleCase(str) {
     2   var arr=str.split(" ");
     3   for(var i in arr){
     4     var len=arr[i].length;
     5     var word=arr[i].toLowerCase();
     6     
     7     if( len==1 ){
     8       arr[i]=word.toUpperCase();
     9     }else{
    10       arr[i]=word.substring(0,1).toUpperCase()+word.substring(1,len);
    11     }
    12     
    13   }
    14   str=arr.join(" ");
    15   return str;
    16 }
    17 
    18 titleCase("I'm a little tea pot");

    Return Largest Numbers in Arrays 

    右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。

     1 function largestOfFour(arr) {
     2   // You can do this!
     3   var max=[];
     4   
     5   for(var i in arr){
     6     let bigger;
     7     for(var j in arr[i]){
     8       bigger=bigger?( arr[i][j]>bigger?arr[i][j]:bigger ):arr[i][j];
     9     }
    10     max.push(bigger);
    11   }
    12   return max;
    13 }
    14 
    15 largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

    Confirm the Ending

    检查一个字符串(str)是否以指定的字符串(target)结尾

    1 function confirmEnding(str, target) {
    2   // "Never give up and good luck will find you."
    3   // -- Falcor
    4   var str1=str.replace( new RegExp(target,"g"),"|");
    5   var flag=str1.lastIndexOf("|");
    6   return flag==str1.length-1?true:false;
    7 }
    8 
    9 confirmEnding("Bastian", "n");

    Repeat a string repeat a string

    重复一个指定的字符串 num次,如果num是一个负数则返回一个空字符串。

     1 function repeat(str, num) {
     2   // repeat after me
     3   var str1=str;
     4   if( num<=0 ){
     5     str1="";
     6   }
     7   
     8   while( num>1 ){
     9     str1+=str;
    10     num--;
    11   }
    12   return str1;
    13 }
    14 
    15 repeat("abc", 3);

    Truncate a string

    如果字符串的长度比指定的参数num长,则把多余的部分用...来表示。

     1 function truncate(str, num) {
     2   // Clear out that junk in your trunk
     3   var index;
     4   if( str.length>num ){
     5     if ( num<=3 ){
     6       index=num;
     7     }else{
     8       index=num-3;  //-3是减去...的长度
     9     }
    10     str=str.slice(0,index)+"...";
    11   }
    12   
    13   return str;
    14 }
    15 
    16 truncate("A-tisket a-tasket A green and yellow basket", 11);

    Chunky Monkey

    把一个数组arr按照指定的数组大小size分割成若干个数组块。

     1 function chunk(arr, size) {
     2   // Break it up.
     3   var arr2=[];
     4   var max=Math.ceil( arr.length/size );
     5   
     6   for(var i=0;i<max;i++){
     7     arr2.push( arr.slice(i*size,i*size+size) );
     8   }
     9   return arr2;
    10 }
    11 
    12 chunk(["a", "b", "c", "d"], 2);

    Slasher Flick

    返回一个数组被截断n个元素后还剩余的元素,截断从索引0开始。

    1 function slasher(arr, howMany) {
    2   // it doesn't always pay to be first
    3   arr.splice(0,howMany);
    4   return arr;
    5 }
    6 
    7 slasher([1, 2, 3], 2);

    Mutations

    如果数组第一个字符串元素包含了第二个字符串元素的所有字符,函数返回true。

     1 function mutation(arr) {
     2   var main=arr[0].toLowerCase();
     3   var search=arr[1].toLowerCase().split("");
     4   for(var a in search){
     5     if( main.indexOf( search[a] )==-1 ){
     6       return false;
     7     }
     8     
     9   }
    10   return true;
    11 }
    12 
    13 mutation(["hello", "hey"]);

    Falsy Bouncer

    删除数组中的所有假值。

     1 function bouncer(arr) {
     2   // Don't show a false ID to this bouncer.
     3   return arr.filter(isTrue);
     4 }
     5 
     6 function isTrue(ele){
     7   if( ele ){
     8     return ele;
     9   }
    10   
    11 }
    12 
    13 bouncer([7, "ate", "", false, 9]);

    Seek and Destroy

    实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。

     1 function destroyer() {
     2   // Remove all the values
     3   var arr=[].shift.apply( arguments );
     4   var vals=arguments;
     5  
     6   var arr2=arr.filter(function(ele){
     7     for(var i=0,l=vals.length;i<l;i++){
     8       if( ele==vals[i] ){
     9         return false;
    10       }  
    11     }
    12     return true;
    13   });
    14   console.log(arr2);
    15   return arr2;
    16 }
    17 
    18 
    19 
    20 destroyer([1, 2, 3, 1, 2, 3], 2, 3);

    Where do I belong

    先给数组排序,然后找到指定的值在数组的位置,最后返回位置对应的索引。

     1 function where(arr, num) {
     2   // Find my place in this sorted array.
     3   arr.push(num);
     4   var index=arr.sort(function(a,b){
     5     return a-b;
     6   }).indexOf(num);
     7   return index;
     8 }
     9 
    10 where([40, 60], 50);

    Caesars Cipher

    下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。

    写一个ROT13函数,实现输入加密字符串,输出解密字符串。

     1 function rot13(str) { // LBH QVQ VG!
     2   var arr=str.split(" ");
     3   var result=[];
     4   for(var i in arr){
     5     result.push( word(arr[i],13) );
     6   }
     7   return result.join(" ");
     8 }
     9 
    10 function word(str,num){
    11   var res="";
    12   for(var i=0,l=str.length;i<l;i++){
    13     res+=String.fromCharCode( char(str.charCodeAt(i),num) );
    14   }
    15   return res;
    16 }
    17 function char(old,add){
    18   //65-90  A-Z
    19   //97-122 a-z
    20   var res;
    21   var cha;
    22   if( old>=65 && old<=90 ){
    23     cha=old+add-90;
    24     res=cha<=0?old+add:65+cha-1;
    25   }else if( old>=97 && old<=122 ){
    26     cha=old+add-122;
    27     res=cha<=0?old+add:97+cha-1;
    28   }else{
    29     res=old;
    30   }
    31   
    32   return res;
    33   
    34 }
    35 
    36 
    37 
    38 // Change the inputs below to test
    39 rot13("SERR PBQR PNZC");
  • 相关阅读:
    uva 1391(2-SAT)
    uva 1146(2-SAT+二分判断)
    uva 12167(强连通分支)
    uva 11324(强连通分支+DAG)
    Codeforces Round #227 (Div. 2) 解题报告
    uva 10319(2-SAT)
    uva 610(割边)
    uva 11504(强连通分支)
    测试:网页测试,入门面试题
    测试:安装包的测试
  • 原文地址:https://www.cnblogs.com/grey-zhou/p/6134284.html
Copyright © 2011-2022 走看看