【发布时间】:2009-03-02 20:31:11
【问题描述】:
给定一个不同长度的单词列表,找到任何单词的最大长度的最佳方法是什么?
例如,下面应该返回 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 方法?转换为数组并按项目长度排序?计算逗号之间的最大间隔?
实际上,以上两个示例中的任何一个都可以很好地满足我当前的需求,而且这不适用于对性能至关重要的东西,所以我不需要 回答这个问题,但我认为看看人们可能会想出什么仍然很有趣......
【问题讨论】:
-
此时我只需要插话:基于 xml 的语言是可憎的 :)
-
CFML 是基于标签的,not 基于 XML。除了上面的 cffunction 标记之外的所有标记都会有一个 XML 解析器抱怨。
标签: string language-agnostic list coldfusion code-golf