gpt4 book ai didi

string - 在一串单词中找到最短的单词

转载 作者:行者123 更新时间:2023-12-04 01:42:45 25 4
gpt4 key购买 nike

我又在做一些 Code-Wars 挑战,我对这个特别的挑战有疑问:

任务:“给定一串单词,返回最短单词的长度。

字符串永远不会为空,您无需考虑不同的数据类型。”

我已经在 SO 上查找了可用的答案,并且我设法根据国外的想法自行创建了程序。

问题是它仍然没有产生所需的输出。

我遍历了代码,我认为问题在于变量,以及我无法分配给代码的正确部分。(尽管我可能是错的)

所以在下面,我附上了代码和测试。

希望,你们中的任何一个都能找到问题的答案。

干杯

object Shortest{
def findShort(str:String):Int ={

var smallestLength = 99
var currentLength = 0

for(word <- str.split("")) {
currentLength = 0

for(letter <- word){
currentLength +=1
}

if(currentLength < smallestLength)
smallestLength = currentLength
}
smallestLength
}
}

这里是测试:

测试结果:

最短测试 findShort(比特币接管世界也许谁知道也许)应该返回 3

测试失败1 不等于 3 堆栈跟踪在 45 毫秒内完成 findShort(事实证明随机测试用例比编写基本测试用例更容易)应该返回 3测试失败

1 不等于 3 堆栈跟踪1ms内完成 findShort(让我们谈谈 javascript 最好的语言)应该返回 3测试失败1 不等于 3 堆栈跟踪1ms内完成 findShort(我想有一天环游世界写代码)应该返回 1 findShort(让所有人去一个非常寒冷的地方度假)应该返回 2测试失败

1 不等于 2 堆栈跟踪1ms内完成 findShort(Steem Dogecoin 21inc Dash MadeSafeCoin) 应该返回 4测试失败

1 不等于 4 堆栈跟踪1ms内完成 findShort(Bitcoin Lisk) 应该返回 4测试失败1 不等于 4 堆栈跟踪1ms内完成 findShort(ProofOfStake Ripple) 应该返回 6测试失败

1 不等于 6 堆栈跟踪 findShort(ProofOfWork Dogecoin BTC Classic Dash Ripple ProofOfWork) 应该返回 3测试失败

1 不等于 3 堆栈跟踪1ms内完成 findShort(LiteCoin Bitcoin LiteCoin Bitcoin Waves Waves Bitcoin Dash Ripple Ripple Ethereum Classic Factom LiteCoin Factom Waves Factom) 应该返回 4测试失败

1 不等于 4 堆栈跟踪2ms内完成 findShort(Bitcoin Waves MadeSafeCoin DarkCoin ProofOfStake Classic BTC) 应该返回 3测试失败

1 不等于 3 堆栈跟踪1ms内完成 findShort(ProofOfStake Waves Ethereum Ethereum Ripple LiteCoin Steem Classic LiteCoin Ripple ProofOfStake Steem Monero Dogecoin Factom) 应该返回 5测试失败

最佳答案

您的解决方案实际上没问题,您需要更改的只是 str.split("")str.split("")(注意空格)。

这是一种依赖内置方法的方法:

def findShort(wordsString: String): Int = {
val wordsArray = wordsString.split(" ")
wordsArray.minBy(_.length).length
}

println(findShort("LiteCoin Bitcoin LiteCoin Bitcoin Waves Waves Bitcoin Dash Ripple Ripple Ethereum Classic Factom LiteCoin Factom Waves Factom"))
// Display 4
println(findShort("Bitcoin Waves MadeSafeCoin DarkCoin ProofOfStake Classic BTC"))
// Display 3

这里有一个使用 foldLeft 的版本,如果你不想依赖内置方法:

def length(word: String): Int =
word.foldLeft(0){case (acc, _) => acc + 1}

def findShort(str:String):Int = {

str.split(" ").foldLeft(99){ case (smallestLength, word) =>
val currentLength = length(word)
if(currentLength < smallestLength)
currentLength
else smallestLength
}
}

关于string - 在一串单词中找到最短的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56702986/

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