【发布时间】:2022-11-17 01:53:37
【问题描述】:
好的,所以我当前的代码可以工作,但我感觉它的效率非常低。本质上,我需要评估一个 String 是否包含一个 String 的字母,该字母的长度是否与第一个字母相同或更短。 (想象一下,尝试使用单词 A 中存在的字母来拼写一个新单词单词 B。单词 B 可以比单词 A 短或相同的长度,但必须只使用单词 A 中的字母,并且不能使用相同的字母两次。 )
我目前的解决方案是将两个字符串排序到一个数组中,然后索引 Word B 数组中的每个字母,检查它是否出现在 Word A 数组中,然后从 Word A 数组中删除该字符。
let wordOne = "battle"
let wordTwo = "table"
var wordOneSorted = wordOne.sorted()
var wordTwoSorted = wordTwo.sorted()
for letter in wordTwoSorted {
if wordOneSorted.contains(letter) {
print("Valid Letter")
let idx = wordOneSorted.firstIndex(of:letter)
wordOneSorted.remove(at: idx!)
} else {
print("Invalid Letter")
}
}
印刷: 有效信件 有效信件 有效信件 有效信件 有效信件
这行得通,但感觉很笨拙,我想看看我是否让一个简单的任务变得比我需要的更复杂。我只需要对整个比较进行评估,如果所有字母都比“True”有效,并且至少有一个无效而不是“False”。
谢谢!
【问题讨论】:
标签: arrays swift comparison contains