1.

问题:Spinal Tap Case


将字符串转换为 spinal case。Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也就是以连字符连接所有小写单词。

spinalCase("This Is Spinal Tap")应该返回 "this-is-spinal-tap"
spinalCase("thisIsSpinalTap") 应该返回 "this-is-spinal-tap"
spinalCase("The_Andy_Griffith_Show")应该返回 "the-andy-griffith-show"
spinalCase("Teletubbies say Eh-oh") 应该返回 "teletubbies-say-eh-oh"
 
代码:
function spinalCase(str) {
  //将字符串的按照符号类型分解,如果分解后的数组长度为1也就说明了当前字符串是一个驼峰类型的字符串。
  if(str.split(/\W|_/).length==1){
    for(var i=0;i<str.length;i++){
      if(/[A-Z]/.test(str[i])){
        str=str.replace(str[i],"-"+str[i].toLowerCase());
      }
    }
  }else str=str.toLowerCase().split(/\W|_/).join("-");
  return str;
}

spinalCase('thisIsSpinalTap');

2.

问题:Sum All Odd Fibonacci Numbers


给一个正整数num,返回小于或等于num的斐波纳契奇数之和。

斐波纳契数列中的前几个数字是 1、1、2、3、5 和 8,随后的每一个数字都是前两个数字之和。

例如,sumFibs(4)应该返回 5,因为斐波纳契数列中所有小于4的奇数是 1、1、3。

提示:此题不能用递归来实现斐波纳契数列。因为当num较大时,内存会溢出,推荐用数组来实现。

 

代码:

function sumFibs(num) {
  var fibo=[1,1];
  var temp=0;
  var nums=2;
  while(true){
    temp=fibo[0]+fibo[1];
    if(temp>num){
      return nums;
    }
    if(temp%2!=0){
      nums+=temp;
    }
    fibo[0]=fibo[1];
    fibo[1]=temp;
  }
}

sumFibs(4);

3.

问题:Sum All Primes


求小于等于给定数值的质数之和。

只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整除。1 不是质数,因为它只能被自身整除。

给定的数不一定是质数。

代码:

function sumPrimes(num) {
  var sum=0;
  for(var i=2;i<=num;i++){
    var isPN=true;
    for(var j=2;j<i;j++){
      if(i%j==0){
        isPN=false;
        break;
      }
    }
    if(isPN) sum+=i;
    
  }
  return sum;
}

4.

问题:Binary Agents


传入二进制字符串,翻译成英语句子并返回。

二进制字符串是以空格分隔的。

parseInt(string,num) num代表num进制,这个方法可以把任何进制的数转化为十进制;  相应的,a.toString(num),这个方法可以把十进制转化为任何进制的数;

代码:

function binaryAgent(str) {
  var arr=str.split(" ");
  for(var i=0;i<arr.length;i++){
    arr[i]=parseInt(arr[i],2);
    arr[i]=String.fromCharCode(arr[i]);
  }
  str=arr.join("");
  return str;
}

  

  

  

 

  

posted on 2017-11-07 17:31  Wendy_Guo  阅读(154)  评论(0编辑  收藏  举报