Skip to content

the Longest Word in a String

LYF edited this page Jul 11, 2016 · 3 revisions

找到字符串中最长的单词

题目链接:https://www.freecodecamp.cn/challenges/find-the-longest-word-in-a-string

这道题目有多种答案,每个答案代表着不同的思路。

1、最简洁的答案

解题思路:用map来映射字符串数组,返回一个数字数组,最后通过apply的方式把数组传入Math.max()中。

function findLongestWord(str) {
  var arr=str.split(" ").map(function(ele){return ele.length;});
  return Math.max.apply(null,arr);
}
findLongestWord("The quick brown fox jumped over the lazy dog");

利用ES6的spread operatorarrow function进一步简化:

function findLongestWord(str){
    return Math.max(...str.split(/ +|,\./).map(v => v.length ));
}

2、最普遍的答案

解题思路:用for循环来遍历数组,生成一个新的数字数组,最后也是通过apply的方式把数组传入Math.max()中。

function findLongestWord(str) {
 var arr=str.split(" ");
 var arr1=[];
  var max=0;
  for(i=0;i<arr.length;i++){
    arr1.push(arr[i].length);
  }
  return Math.max.apply(null,arr1);
}
findLongestWord("The quick brown fox jumped over the lazy dog");

3、最容易的答案

解题思路:用for循环来遍历数组,生成一个新的数字数组,不采用apply方式,而采用数组排序的方式找到数字数组中最大的值。

function findLongestWord(str) {
 var arr=str.split(" ");
 var arr1=[];
  var max=0;
  for(i=0;i<arr.length;i++){
    arr1.push(arr[i].length);
  }
  arr1.sort(function(a,b){
    return a-b;
  });
  return arr1[arr1.length-1];
}
findLongestWord("The quick brown fox jumped over the lazy dog");

4、最复杂的答案

解题思路:用for循环来遍历数组,生成一个新的数字数组,不采用apply方式,而采用冒泡排序的方式找到数字数组中最大的值。

function findLongestWord(str) {
 var arr=str.split(" ");
 var arr1=[];
  var max=0;
  for(i=0;i<arr.length;i++){
    arr1.push(arr[i].length);
  }
  sort(arr1);
  return arr1[arr1.length-1];
}
function sort(arr){
  for(var i=0;i<arr.length-1;i++){
    for(var j=0;j<arr.length-i-1;j++){
      if(arr[j]>arr[j+1]){
        var temp = arr[j+1]; //保存较小值为交换变量
        arr[j+1] = arr[j]; //把最大值放在右边位置
        arr[j] = temp; //把最小值放在左边位置
      }
    }
  }
}
findLongestWord("The quick brown fox jumped over the lazy dog");
Clone this wiki locally