这里会记录下我对这个基础算法题目的解答。
- Reverse a String
function reverseString(str) {
return str.split("").reverse().join("");
}
- Factorialize a Number
function factorialize(num) {
if (typeof num === 'number' && num >= 0 && num % 1 === 0) {
if (num === 0) {
return 1;
}
var output = num;
for(var i = 2; 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[0].length;
for(var i = 1; 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(0), val.charAt(0).toUpperCase());
});
return str.join(" ");
}
- Return Largest Numbers in Arrays
function largestOfFour(arr) {
// You can do this!
return arr.map(function(subArray) {
var max = subArray[0];
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 = 0; 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 > 3 ? num - 3 : num;
return str.slice(0, num) + "...";
}
- Chunky Monkey
function chunkArrayInGroups(arr, size) {
// Break it up.
var output = [];
for(var i = 0; 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[0].toLowerCase();
var charArray = arr[1].toLowerCase().split("");
for(var i = 0; i < charArray.length; i++) {
if(smallString.indexOf(charArray[i]) === -1) {
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 = 1; 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(0) % 26 + 65);
}).join("");
}