首页 > 语言 > JavaScript > 正文

w3c编程挑战_初级脚本算法实战篇

2024-05-06 15:15:31
字体:
来源:转载
供稿:网友

之前偶然看到了w3c上的编程挑战题,就像拿来试试手,先做的是初级脚本算法,总体不难,如果有更好的方法,希望能一起交流!

1、翻转字符串

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

function reverseString(str) {      var str2 = '';      for(var i=str.length-1;i>=0;i--){        str2 += str[i];      }      return str2;    }    function reverseString(str){      var strArray = str.split('');      strArray.reverse();      str = strArray.join('');      return str    }

2、计算一个整数的阶乘

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

function factorialize(num) {      var sum = 1;      for(var i=num;i>0;i--){        sum *= i;      }      console.log(sum);      return sum;    }    function factorialize(num) {      if(num ==1){        return 1;      }else{        return arguments.callee(num-1)*num;      }    }

3、回文算法

如果给定的字符串是回文,返回true,反之,返回false。

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

注意你需要去掉字符串多余的标点符号和空格,然后把字符串转化成小写来验证此字符串是否为回文。

function palindrome(str) {        var arr = [];        str = str.toLowerCase();                for(var i=0;i<str.length;i++){          // 在小写字母的Unicode的范围内或者在数字的Unicode范围内          if((str.charCodeAt(i)<=122 && str.charCodeAt(i)>=97) ||           (str.charCodeAt(i)<=57 && str.charCodeAt(i)>=48)){            arr.push(str[i]);          }        }        //只需要判断数组一半的次数就全部比较完了,不必再浪费时间了        for(var i=0;i<Math.ceil(arr.length/2);i++) {          if(arr[i] !== arr[arr.length-i-1]){            return false;          }        }        return true;              }      // 需要手动添加特殊字符      function palindrome(str){        var str1,str2;        str = str.toLowerCase();        str = str.replace(/[/ |/~|/`|/!|/@|/#|/$|/%|/^|/&|/*|/(|/)|/-|/_|/+|/=|/||//|/[|/]|/{|/}|/;|/:|/"|/'|/,|/<|/.|/>|//|/?]/g,"");        str1 = str.split('');        str1.reverse();        str2 = str1.join('');        if(str === str2){          return true        }else{          return false;        }      }

4、寻找最长的单词算法

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

函数的返回值应该是一个数字。

// 利用charCodeAt()方法判断是不是一个单词,并记录单词长度,最后获得最长的单词长度    function findLongestWord(str) {      var num = 0,        max = 0;      for (var i = 0; i < str.length; i++) {        if (str.charCodeAt(i) !== 32) {          num++;        } else {          // 注意:如果最后一个字母不是空格,不会比较最后一个单词的长度          max = num > max ? num : max;          num = 0;        }      }      // 比较最后一个单词的长度      max = num > max ? num : max;      return max;    }    // 利用split()方法将字符串分成每个单词组成的数组,取得其中最长的长度    function findLongestWord(str){      var max = 0;      var arr = str.split(' ');      for(var i=0;i<arr.length;i++){        max = arr[i].length>max?arr[i].length:max;      }      return max;    }            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选