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