当前位置:  开发笔记 > 编程语言 > 正文

查找列表中最长项目长度的最有效方法是什么?

如何解决《查找列表中最长项目长度的最有效方法是什么?》经验,为你挑选了1个好方法。

给出各种长度单词的列表,找到任何单词的最大长度的最佳方法是什么?

例如,以下应返回6

findMaxLen("a,set,of,random,words")


当然,这样做是相当微不足道的......


    
    
    
        
            
        
    
    


或者,更短一点......


    
    
    
        
    
    


但是有更好的方法 - 更高效的东西吗?

也许是一些Java方法?转换为数组并按项目长度排序?计算逗号之间的最大差距?


在实际应用中,无论是上述两个例子将罚款我目前的需求,这是不适合的东西是性能的关键,所以我并不需要一个答案,但我认为这仍然将是有趣的看看人们会想出什么......



1> Daniel LeChe..:

计算逗号之间的距离.

我认为没有什么比这更快; 它是O(n),你必须至少看一次每个角色一次(看它是否是一个逗号).

int FindLongestWord(char* str)
{
   char* lastComma = str - 1;
   int longest = 0;
   int length;
   char* pCheckChar;

   for(pCheckChar = str; *pCheckChar; pCheckChar++)
   {
      if(*pCheckChar == ',')
      {
         length = pCheckChar - lastComma - 1;
         if(length > longest)
         {
            longest = length;
         }

         lastComma = pCheckChar;
      }
   }

   // Check to see if the last word is the longest
   length = pCheckChar - lastComma - 1;
   if(length > longest)
   {
      longest = length;
   }

   return longest;
}

或者我想你可以说

"a,set,of,random,words".Split(',').Max(w=>w.Length);

如果我们正在玩游戏......;]

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有