Pet*_*ton 3 language-agnostic string coldfusion code-golf list
给出各种长度单词的列表,找到任何单词的最大长度的最佳方法是什么?
例如,以下应返回6
findMaxLen("a,set,of,random,words")
Run Code Online (Sandbox Code Playgroud)
当然,这样做是相当微不足道的......
<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>
Run Code Online (Sandbox Code Playgroud)
或者,更短一点......
<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>
Run Code Online (Sandbox Code Playgroud)
但是有更好的方法 - 更高效的东西吗?
也许是一些Java方法?转换为数组并按项目长度排序?计算逗号之间的最大差距?
在实际应用中,无论是上述两个例子将罚款我目前的需求,这是不适合的东西是性能的关键,所以我并不需要一个答案,但我认为这仍然将是有趣的看看人们会想出什么......
Dan*_*ant 11
计算逗号之间的距离.
我认为没有什么能比这更快; 它是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;
}
Run Code Online (Sandbox Code Playgroud)
或者我想你可以说
"a,set,of,random,words".Split(',').Max(w=>w.Length);
Run Code Online (Sandbox Code Playgroud)
如果我们正在玩游戏......;]
| 归档时间: |
|
| 查看次数: |
925 次 |
| 最近记录: |