天天看點

FCC-Basic Algorithm Scripting

這裡會記錄下我對這個基礎算法題目的解答。

  • Reverse a String
function reverseString(str) {
  return str.split("").reverse().join("");
}
           
  • Factorialize a Number
function factorialize(num) {
  if (typeof num === 'number' && num >=  && num % 1 === 0) {
    if (num === ) {
      return ;
    }
    var output = num;
    for(var i = ; i < num; i++) {
      output *= i;
    }
    return output;
  } else {
    return "Input must be a non-negative integer.";
  }
}
           
  • Check for Palindromes
function palindrome(str) {
  // Good luck!
  var newArray = str.replace(/[^A-Za-z0-9]/gi, "").toLowerCase().split("");
  return newArray.join("") === newArray.reverse().join("");
}
           
  • Find the Longest Word in a String
function findLongestWord(str) {
  var array = str.split(" ");
  var max = array[].length;
  for(var i = ; i < array.length; i++) {
    if(array[i].length > max) {
      max = array[i].length;
    }
  }
  return max;
}
           
  • Title Case a Sentence
function titleCase(str) {
  str = str.toLowerCase().split(" ").map(function(val) {
    return val.replace(val.charAt(), val.charAt().toUpperCase());
  });
  return str.join(" ");
}
           
  • Return Largest Numbers in Arrays
function largestOfFour(arr) {
  // You can do this!
  return arr.map(function(subArray) {
    var max = subArray[];
    subArray.map(function(val) {
      if(val > max) {
        max = val;
      }
    });
    return max;
  });
}
           
  • Confirm the Ending
function confirmEnding(str, target) {
  // "Never give up and good luck will find you."
  // -- Falcor
  return (str.substring(str.length - target.length) === target);
}
           
  • Repeat a string repeat a string
function repeatStringNumTimes(str, num) {
  // repeat after me
  var output = "";
  for(var i = ; i < num; i++) {
      output += str;
    }    
  return output;
}
           
  • Truncate a string
function truncateString(str, num) {
  // Clear out that junk in your trunk
  if(str.length <= num) {
    return str;
  }
  num = num >  ? num -  : num;
  return str.slice(, num) + "...";
}
           
  • Chunky Monkey
function chunkArrayInGroups(arr, size) {
  // Break it up.
  var output = [];
  for(var i = ; i < arr.length; i += size) {
    output.push(arr.slice(i, size + i));
  }
  return output;
}
           
  • Slasher Flick
function slasher(arr, howMany) {
  // it doesn't always pay to be first
  return arr.slice(howMany);
}
           
  • Mutations
function mutation(arr) {
  var smallString = arr[].toLowerCase();
  var charArray = arr[].toLowerCase().split("");
  for(var i = ; i < charArray.length; i++) {
    if(smallString.indexOf(charArray[i]) === -) {
      return false;
    }
  }
  return true;
}
           
  • Falsy Bouncer
function bouncer(arr) {
  // Don't show a false ID to this bouncer.
  return arr.filter(function(val) {
    return Boolean(val);
  });
}
           
  • Seek and Destroy
function destroyer(arr) {
  // Remove all the values
  var leng = arguments.length;
  var array = Array.from(arguments);
  return arr.filter(function(val) {
    for(var i = ; i < leng; i++) {
      if(val === array[i]) {
        return false;
      }
    }
    return true;
  });
}
           
  • Where do I belong
function getIndexToIns(arr, num) {
  // Find my place in this sorted array.
  return arr.concat(num).sort(function(a, b) {
    return a - b;
  }).indexOf(num);
}
           
  • Caesars Cipher
function rot13(str) { // LBH QVQ VG!
  return str.toUpperCase().split("").map(function(char) {
    // if char is not from A to Z then ouput char itself
    if(char.match(/[A-Z]/) === null) {
      return char;
    }
    return String.fromCharCode(char.charCodeAt() %  + );
  }).join("");
}
           

繼續閱讀