zoukankan      html  css  js  c++  java
  • JS基础算法题(一)

    记录在FreeCodeCamp中遇到的Javascript基础算法题

    1.翻转字符串

    先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串

    1. function reverseString(str)
    2. var arr = str.split(""); 
    3. var reverseArr = arr.reverse(); 
    4. str = reverseArr.join(''); 
    5. return str; 
    6.  
    7. reverseString("hello"); //olleh 

    用到的方法:String.split();Array.join();Array.reverse()

    2.计算整数的阶乘

    如果用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积。

    1. function factorialize(num)
    2. var result =1
    3. for(var i=1;i<=num;i++){ 
    4. result*=i; 
    5. return result; 
    6.  
    7. factorialize(5);//5*4*3*2*1=120 
    3.回文字符串

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

    1. function palindrome(str)
    2. str = str.replace(/[^w]/gi, "").replace(/_/g, "");  
    3. str = str.toLowerCase(); 
    4. var reverseStr = str.split("").reverse().join(''); 
    5. if (str == reverseStr) { 
    6. return true
    7. } else
    8. return false
    9.  
    10. palindrome("eye"); 

    涉及知识点:String.replace();String.toLowerCase();正则表达式

    4.找出最长的单词

    在句子中找出最长的单词,并返回它的长度。

    1. function findLongestWord(str)
    2. str = str.split(" "); 
    3. //这里我用了一个比较麻烦的方法,冒泡排序;简便方法可以看第6题 
    4. for (var i = 0; i < str.length; i++) { 
    5. for (var j = 0; j < str.length - 1 - i; j++) { 
    6. if (str[j + 1].length > str[j].length) { 
    7. var temp = str[j]; 
    8. str[j] = str[j + 1]; 
    9. str[j + 1] = temp; 
    10. return str[0].length; 
    11.  
    12. findLongestWord("The quick brown fox jumped over the lazy dog"); 

    涉及知识:String.split();String.length;排序算法

    5.字符串首字母大写

    句中单词首字母大写。确保字符串的每个单词首字母都大写,其余部分小写。像'the'和'of'这样的连接符同理。

    1. function titleCase(str)
    2. var strArr = str.toLowerCase().split(" "); 
    3. for(var i=0;i<strArr.length;i++){ 
    4. var first = strArr[i].charAt(0);//返回指定位置的字符,标点符号也包括在内 
    5. strArr[i] = strArr[i].replace(first,function(first)
    6. return first.toUpperCase(); 
    7. }); 
    8. str = strArr.join(" "); 
    9. return str; 
    10.  
    11. titleCase("I'm a little tea pot"); 

    涉及知识:String.charAt();String.split();String.toUpperCase()

    6.找出多个数组中的最大数
    1. function largestOfFour(arr)
    2. var largestArr = []; 
    3. for(var i=0;i<arr.length;i++){ 
    4. var largest = 0
    5. for(var j=0;j<arr[i].length;j++){ 
    6. largest = arr[i][j]>largest?arr[i][j]:largest; 
    7. largestArr.push(largest); 
    8. return largestArr; 
    9.  
    10. largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]); //[5,27,39,1001] 

    涉及知识:三元运算符;比较操作符

    7.检查字符串结尾

    判断一个字符串(str)是否以指定的字符串(target)结尾。

    1. function confirmEnding(str, target)
    2. //substr()在字符串中抽取从 start 下标开始的指定数目的字符 
    3. if(target == str.substr(str.length - target.length, target.length)){ 
    4. return true
    5. }else
    6. return false
    7.  
    8. confirmEnding("Bastian", "n");//true 
    9. confirmEnding("He has to give me a new name", "me");//true 

    涉及知识:String.substr();

    8.重复输出字符串

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

    1. function repeat(str, num)
    2. var res = ""
    3. for(var i=0; i<num; i++){ 
    4. res += str; 
    5. return res; 
    6.  
    7. repeat("abc", 3); 
    9.截断字符

    如果字符串的长度比指定的参数num长,则把多余的部分用...来表示。

    切记,插入到字符串尾部的三个点号也会计入字符串的长度。

    但是,如果指定的参数num小于或等于3,则添加的三个点号不会计入字符串的长度。

    1. function truncate(str, num)
    2. var extra=""
    3. if(str.length>num){ 
    4. if(num>3){ 
    5. extra = str.slice(0,num-3)+"..."
    6. }else
    7. extra = str.slice(0,num)+"..."
    8. return extra; 
    9. return str; 
    10.  
    11. truncate("A-tisket a-tasket A green and yellow basket", 11);//A-tisket... 

    涉及知识:String.slice()

    10.截断数组

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

    1. function slasher(arr, howMany)
    2. arr.splice(0,howMany); 
    3. return arr; 
    4.  
    5. slasher([1, 2, 3], 2); 

    涉及知识:Array.splice()

  • 相关阅读:
    Linux的各个文件夹名称解释(FHS)
    ThinkPHP3.1URL分发BUG修正
    HTTP响应头缓存控制
    Web性能测试工具:http_load安装&使用简介
    无法登陆github官网的解决办法
    次梯度(Subgradient)
    科普帖:深度学习中GPU和显存分析
    关于图像分类的问题
    深度学习中的多尺度模型设计
    Pytorch模型定义的三要
  • 原文地址:https://www.cnblogs.com/MandyCheng/p/10918238.html
Copyright © 2011-2022 走看看