• 算法练习(js)


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

      

      

      

     

      

  • 相关阅读:
    Ubuntu 只能用guest登录的问题修复
    Ubuntu下编译C语言程序(同时给编译生成的文件命名)
    设置PYTHONIOENCODING
    Ubuntu安装atom
    R语言中将数据框(data.frame)中字符型数据转化为数值型
    修改记事本默认编码为UTF-8
    Java虚拟机浅探
    制作宅基腐主页 && 制作个人简历--材料:BootStrap
    尝试用有限状态机解决一道算法题
    OOP,WEB开发实用小技巧
  • 原文地址:https://www.cnblogs.com/Wendy-Guo/p/7800059.html
Copyright © 2020-2023  润新知