gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:16:54 24 4
gpt4 key购买 nike

给定一系列不同长度的单词,找到任何单词的最大长度的最佳方法是什么?

例如,以下应返回 6

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

当然,这样做是相当微不足道的......
<cffunction name="findMaxLen" returntype="Numeric">
<cfset var CurMax = 0 />
<cfset var CurItem = 0 />
<cfloop index="CurItem" list="#Arguments[1]#">
<cfif Len(CurItem) GT CurMax >
<cfset CurMax = Len(CurItem)/>
</cfif>
</cfloop>
<cfreturn CurMax />
</cffunction>

或者,短一点...
<cffunction name="findMaxLen" returntype="Numeric">
<cfset var CurMax = 0 />
<cfset var CurItem = 0 />
<cfloop index="CurItem" list="#Arguments[1]#">
<cfset CurMax = Max( CurMax , Len(CurItem) ) />
</cfloop>
<cfreturn CurMax />
</cffunction>

但是有没有更好的方法——更有效的方法?

也许一些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);

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

关于string - 查找列表中最长项目长度的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/603877/

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