-
Notifications
You must be signed in to change notification settings - Fork 282
the Longest Word in a String
huluoyang edited this page Jul 1, 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");
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");
非常感谢你能在万千GitHub项目中发现这里,如果你也喜欢这个项目,不要忘记给我们点赞(Star)哦。
如果想知道项目的每一步进展,可以关注(Watch)我们哦。
如果想贡献代码,提交PR,可以新建一个属于自己的分支(Fork)哦。
欢迎你来到freecodecamp中文社区。