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;
}

  

  

  

  

05-11 21:50