Javascript 如何在字符串数组中查找最长的公共前缀?
我试图使用.each方法解决这个问题,但它没有返回true,因此它没有添加到我的字符串中,我不知道为什么 var longestCommonPrefix=functionarr{ 如果arr.length==0{ 返回未定义; } 让结果=; 对于let i=0;iJavascript 如何在字符串数组中查找最长的公共前缀?,javascript,Javascript,我试图使用.each方法解决这个问题,但它没有返回true,因此它没有添加到我的字符串中,我不知道为什么 var longestCommonPrefix=functionarr{ 如果arr.length==0{ 返回未定义; } 让结果=; 对于let i=0;iarr[i].charAti==x{ 结果+=arr[i]。特征; } } 返回结果 } 控制台。loglongestCommonPrefix[花,流,飞行]//fl您需要迭代一个字符串,而不是整个数组:检查字符串的第一个字符是否无
控制台。loglongestCommonPrefix[花,流,飞行]//fl除非我弄错了,否则最长的前缀永远不会大于数组中最小的字符串 在这种情况下,fl是最小的字符串和最长的公共前缀: [花卉、佛罗里达、航班] 因此,首先在arr中查找最小的字符串: 让[sm]=[…arr].sorta,b=>a.length-b.length; 然后检查arr中的所有字符串是否以sm开头: arr.everystr=>str.startsWithsm; 如果不是这样,则将sm缩短一个字符: sm=sm.0,-1; 然后继续,直到最终找到最长的前缀或sm变成空字符串: 常量前缀=arr=>{ 让[sm]=[…arr].sorta,b=>a.length-b.length; 而sm&&!arr.everystr=>str.startsWithsm=sm.slice0,-1; 返回sm; };
除非我弄错了,否则最长的前缀永远不会大于数组中最小的字符串 在这种情况下,fl是最小的字符串和最长的公共前缀: [花卉、佛罗里达、航班] 因此,首先在arr中查找最小的字符串: 让[sm]=[…arr].sorta,b=>a.length-b.length; 然后检查arr中的所有字符串是否以sm开头: arr.everystr=>str.startsWithsm; 如果不是这样,则将sm缩短一个字符: sm=sm.0,-1; 然后继续,直到最终找到最长的前缀或sm变成空字符串: 常量前缀=arr=>{ 让[sm]=[…arr].sorta,b=>a.length-b.length; 而sm&&!arr.everystr=>str.startsWithsm=sm.slice0,-1; 返回sm; };