您的位置:首页 > Web前端

FreeCodeCamp 前端初级算法(个人向)

2016-12-05 16:04 651 查看

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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: