gpt4 book ai didi

javascript - 第 n 个最长字符串排序

转载 作者:行者123 更新时间:2023-11-27 23:01:50 24 4
gpt4 key购买 nike

我编写了用于确定字符串数组中第 n 个最长字符串的代码。下面我列出了 Codewars kata 中的测试用例。

说明:实现函数longest(array,n),您将获得一个字符串数组,然后返回该数组中第n个最长的字符串。例如arr = ['你好','世界','Codewars','Katas'] n = 3;应该返回 'World' 因为 'Codewars' 长度 = 8 , 'Hello' 长度 = 5,所以这是第二长的单词,然后是 'World' (尽管单词长度也是 5,'World' 位于 'Hello' 之后大批)。当单词具有相同长度时,按照它们在数组中存在的顺序处理它们。数组永远不会为空,并且 n > 0 始终。

Test.assertEquals(longest(['Hello','World','Codewars','Katas'],3),'World');
Test.assertEquals(longest(['Hello','World','Codewars','Katas'],4),'Katas');
Test.assertEquals(longest(['aa', 'bb', 'cc', 'dd', 'eee', 'b', 'f', 'ff', 'hhh', 'gggg'],4),'aa');
Test.assertEquals(longest(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k'],1),'a');
Test.assertEquals(longest(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k','l'],1),'a');

我已经通过了所有的 codewars 测试用例,除了最后一个以“l”结尾的数组。我的排序代码行似乎将“f”放置在这个测试用例的第零个位置,我不明白为什么。

function longest(arr, n) {
arrLength = [];
arr.sort(function(a, b){return b.length - a.length});
console.log(arr);
arr.forEach(function(numArray){
return arrLength.push(numArray.length);
});
return arr[n-1];
}

console.log(longest(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k'],1));
// Sorted Array: ["a", "b", "c", "d", "e", "f", "g", "h", "i", "k"]
// returns a
console.log(longest(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k', 'l'],1));
// Sorted Array: ["f", "a", "c", "d", "e", "b", "g", "h", "i", "k", "l"]
// returns f

我似乎无法弄清楚为什么当“l”添加到字符串数组的末尾时,我的排序函数将“f”放在第零位置。

最佳答案

在 MSIE 上运行良好。

对 Microsoft Internet Explorer(任何版本)进行的快速测试可为您提供的功能提供以下结果:

>> longest(['a','b','c','d','e','f','g','h','i','k'],1); 
a,b,c,d,e,f,g,h,i,k
"a"
>> console.log(longest(['a','b','c','d','e','f','g','h','i','k','l'],1));
a,b,c,d,e,f,g,h,i,k,l
a
>> console.log(longest(['a','b','c','d','e','f','g','h','i','k','l',"m","n"],1));
a,b,c,d,e,f,g,h,i,k,l,m,n
a

p.s.:所有非 MS 浏览器都存在 sort()稳定性问题。

关于javascript - 第 n 个最长字符串排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37006813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com