给出各种长度单词的列表,找到任何单词的最大长度的最佳方法是什么?
例如,以下应返回6
findMaxLen("a,set,of,random,words")
当然,这样做是相当微不足道的......
或者,更短一点......
但是有更好的方法 - 更高效的东西吗?
也许是一些Java方法?转换为数组并按项目长度排序?计算逗号之间的最大差距?
在实际应用中,无论是上述两个例子将罚款我目前的需求,这是不适合的东西是性能的关键,所以我并不需要一个答案,但我认为这仍然将是有趣的看看人们会想出什么......
计算逗号之间的距离.
我认为没有什么能比这更快; 它是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);
如果我们正在玩游戏......;]