【发布时间】:2016-05-27 02:45:17
【问题描述】:
我在黑客等级上做https://www.hackerrank.com/challenges/30-review-loop 问题,我遇到了一个超时问题,这个问题已经得到了解决。我希望这里有人可以向我解释为什么一个比另一个快。或者指向我解释这种现象的文档
如果您没有帐户,这里是您在测试用例数量中提供的问题的描述,然后是一个字符串,您的代码将创建一个包含奇数索引中所有字符的字符串和一个包含所有字符的字符串偶数索引中的字符。示例输入
2
Hacker
Rank
返回
Hce akr
Rn ak
简单吧?这是我制作的代码。
if let line = readLine(), numOftests = Int(line) {
for iter in 0..<numOftests {
var evenString = ""
var oddString = ""
var string = readLine()!
var arrChars = [Character](string.characters) //1
for idx in 0..<string.characters.count {
if idx % 2 == 0 {
oddString.append(arrChars[idx]) //1
//oddString.append(string[string.startIndex.advancedBy(idx)]) //2 <= Times out
}
else {
evenString.append(arrChars[idx]) //1
//evenString.append(string[string.startIndex.advancedBy(idx)]) //2 <= Times out
}
}
print("\(oddString) \(evenString)")
}
}
最初我使用了注释掉的代码。这会导致超时。总而言之,我的问题是对字符串使用下标系统会导致它比索引字符数组慢得多。这让我大吃一惊,如果不是黑客级别的讨论组,我不会找到解决方案。现在它激怒了我,因为我不知道为什么这会有所作为。
【问题讨论】:
标签: arrays string swift character