• FCC 16个初级算法解


    1.翻转字符串

    
    
    function reverseString(str) {
    var a=str.split("").reverse().join("");
      return a;
    }
    reverseString("hello");

    2.计算一个整数的阶乘

    
    
    function factorialize(num) {
      if(num===0){
        return 1;
     }
      else{
        var a=num;
          for(var i=num;i>1;i--){
            a=a*(i-1);
          }
        return a;
      }
    }
    factorialize(5);

    3.如果给定的字符串是回文,返回true,反之,返回false。如果一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文)。

    
    
    function palindrome(str) {
        var str1=str.replace(/W/g,"").replace(/\_/g,"").toLowerCase();
        var str2=str.replace(/W/g,"").replace(/\_/g,"").toLowerCase().split("").reverse().join("");
        return str1==str2;
    }
    palindrome("eye");

    4.找到提供的句子中最长的单词,并计算它的长度。

    
    
    function findLongestWord(str) {
      var arr=str.split(" ");
      var leng=0;
      for(var i=0;i<arr.length;i++){
        if(arr[i].length>leng){
           leng=arr[i].length;
        }
      } 
      return leng;
    }
    findLongestWord("The quick brown fox jumped over the lazy dog");

    5.使字符串的每个单词首字母都大写,其余部分小写。

    
    
    function titleCase(str) {
        return str.toLowerCase().replace(/( |^)[a-z]/g, (x=> x.toUpperCase());
    }
    titleCase("I'm a little tea pot");

    6.右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。

    
    
    function largestOfFour(arr) {
      var newarr=[];
      for(var i=0;i<arr.length;i++){
        var num=0;
        for(var j=0;j<arr[i].length;j++){
         if(arr[i][j]>num){
           num=arr[i][j];
         }
        }
        newarr[i]=num;
      }
      return newarr;
    }
    largestOfFour([[4513], [13271826], [32353739], [100010018571]]);

    7.检查一个字符串(str)是否以指定的字符串(target)结尾。如果是,返回true;如果不是,返回false。

    
    
    function confirmEnding(strtarget) {
      var n=target.length;
      var lastword=str.substr(-n,n);
      return lastword==target;
    }
    confirmEnding("Bastian""n");

    8.重复一个指定的字符串 num次,如果num是一个负数则返回一个空字符串。

    
    
    function repeat(strnum) {
      var str1="";
      for(var i=0;i<num;i++){
        str1 +=str;
      }
      return str1;
    }
    repeat("abc"3);

    9.如果字符串的长度比指定的参数num长,则把多余的部分用...来表示。如果指定的参数num小于或等于3,则添加的三个点号不会计入字符串的长度。

    
    
    function truncate(strnum) {
      if(str.length>num){
          var arr=str.split("");
          var newstr="";
          if(num>3){
            for(var i=0;i<num-3;i++){
               newstr = newstr+arr[i]; 
              }
          }
          else{
             for(var j=0;j<num;j++){
               newstr = newstr+arr[j]; 
              }
           }
         return newstr+"...";
      }  
      else {
        return str;
      }
    }
    truncate("A-tisket a-tasket A green and yellow basket"11);

    10.把一个数组arr按照指定的数组大小size分割成若干个数组块。

    
    
    function chunk(arrsize) {
      var newArray=[];
      for(var i=0;i<arr.length;i+=size){
        newArray.push(arr.slice(i,i+size));
      }
      return newArray;
    }
    chunk(["a""b""c""d"], 2);

    11.返回一个数组被截断n个元素后还剩余的元素,截断从索引0开始。

    
    
    function slasher(arrhowMany) {
      arr.splice(0howMany);
      return arr;
    }
    slasher([123], 2);

    12.如果数组第一个字符串元素包含了第二个字符串元素的所有字符,函数返回true。

    
    
    function mutation(arr) {
      var str0=arr[0].toLowerCase();
      var str1=arr[1].toLowerCase();
      var myarr=str1.split("");
      var num=0;
      for(var i=0;i<myarr.length;i++){
        if (str0.indexOf(myarr[i]) !== -1){
          num++;
        }
      }
      return num==myarr.length;
    }
    mutation(["hello""hey"]);

    13.删除数组中的所有假值。在JavaScript中,假值有falsenull0""undefinedNaN

    
    
    function bouncer(arr) {
      var newArray = arr.filter(function(x){
        return Boolean(x);  
      });
      return newArray;
    }
    bouncer([7"ate"""false9]);

    14.实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。

    
    
    function destroyer(arr) {
      var newArray = [];
      for(var i = 1i < arguments.lengthi++){
        newArray.push(arguments[i]);
      }
      var temp = arr.filter(function(x){
        return newArray.indexOf(x) < 0;
      });
      return temp;
    }
    destroyer([123123], 23);

    15.先给数组排序,然后找到指定的值在数组的位置,最后返回位置对应的索引。

    
    
    function where(arrnum) {
      arr.push(num);
      arr.sort(function(ab) {
        return a - b;
      }); 
      for(var i=0;i<arr.length;i++){
        if(arr[i]==num){
          return i;
        }
      }
    }
    where([4060], 50);

    16.rot13加密,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔ 'O',以此类推。

    
    
    function rot13(str) { 
       return str.replace(/[a-z]/gifunction (x) {
          return String.fromCharCode(x.charCodeAt(0) + (x.toLowerCase() < 'n' ? 13 : -13));
       });
    }
    rot13("SERR PBQR PNZC");

     

  • 相关阅读:
    C# 的 TOML 库
    测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机
    开源的负载测试/压力测试工具 NBomber
    .NET 6 Preview 6 正式发布: 关注网络开发
    .NET 5.0 Docker 镜像 错误修复方法
    [LeetCode] 1191. K-Concatenation Maximum Sum K次串联后最大子数组之和
    [LeetCode] 1190. Reverse Substrings Between Each Pair of Parentheses 反转每对括号间的子串
    [LeetCode] 1189. Maximum Number of Balloons 气球的最大数量
    [LeetCode] 1187. Make Array Strictly Increasing 使数组严格递增
    [LeetCode] 1186. Maximum Subarray Sum with One Deletion 删除一次得到子数组最大和
  • 原文地址:https://www.cnblogs.com/shen076/p/6575202.html
Copyright © 2020-2023  润新知