Find the Longest Word in a String

string.png

这道题的难点在于如何找出最长的单词,还是先写出万能的for循环语句实现,再考虑是否有其他方法更简洁;
代码如下:

  1. function findLongestWord(str) {
  2. // 请把你的代码写在这里
  3. var a = str.split(" ");
  4. //初始化b的值,方便与a数组中单词的长度对比
  5. var b = 0;
  6. for(var i = 0; i < a.length; i++){
  7. //如果a数组中的单词长度大于b,就将该词的长度值赋给b,然后继续比较
  8. //直到遍历整个数组,那么b的值就是数组中单词长度最大的值
  9. if(a[i].length > b){
  10. b = a[i].length;
  11. }
  12. }
  13. return b;
  14. }
  15. findLongestWord("The quick brown fox jumped over the lazy dog");

第二种方法就是运用 sort() 方法;在MDN中,是这样定义 sort() 方法:

sort() 方法接受一个比较函数compareFunction ,数组会按照调用该函数的返回值排序。即 a 和 b 是两个将要被比较的元素:

如果 compareFunction(a, b)小于 0 ,那么 a 会被排列到 b 之前;

如果compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本);

如果 compareFunction(a, b)大于 0 , b 会被排列到 a 之前。
compareFunction(a, b) 必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。

所以,比较函数格式如下:

  1. function compare(a, b) {
  2. if (a < b ) { // 按某种排序标准进行比较, a 小于 b
  3. return -1;
  4. }
  5. if (a > b ) {
  6. return 1;
  7. }
  8. // a must be equal to b
  9. return 0;
  10. }

代码如下:

  1. function findLongestWord(str) {
  2. // 请把你的代码写在这里
  3. var a = str.split(" ");
  4. //这里使用的是降序排列,也就是单词长度大的排在前面
  5. a.sort(function(m,n){
  6. return n.length - m.length;
  7. })
  8. return a[0].length;
  9. }

和for循环的方法相比,使用sort()方法代码更简洁。

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。