【发布时间】:2019-06-21 20:31:09
【问题描述】:
我又在做一些 Code-Wars 挑战,我对这个特定的挑战有一个问题:
Task: " 给定一串单词,返回最短单词的长度。
字符串永远不会为空,您不需要考虑不同的数据类型。”
我在 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 测试失败
【问题讨论】:
-
如果您的输入只有大小为 100 或更大的子字符串会怎样?
-
如果您想要单线:
def f(s:String) = s.split(" ").map(_.length).filter(_ > 0).min