我正在尝试计算数组中不同字符串的数量。例如,我的数组是:
let stringArray = ["test", "test", "test1", "test2"]
输出应为“3”,因为“test”和“test”是相同的,但“test”,“test1”和“test2”是不同的。我正在考虑使用嵌套的for循环来检查第一个循环中的stringArray
字符串与stringArray
中的所有其他元素,但我无法让它工作。我现在唯一能想到的就是检查内部循环,如果字符串是相同的并且突破 - >进入下一个元素。我遇到的问题是检查内循环是否在最后一个元素上。以下是我的想法:
var differentStrings = Int()
let stringArray = ["test", "test", "test1", "test2"]
for str in stringArray {
for str2 in stringArray {
if (str == str2) {
break
} else {
differentStrings = differentStrings + 1
}
}
}
print(differentStrings)
此处的输出不正确 - >它打印出5因为我没有在else语句中检查str2
是否是内循环中的最后一个元素。
如何获取数组中不同字符串的数量?
答案 0 :(得分:2)
如果排序无关紧要,只需制作Set
:
let differentStrings = Set(stringArray)
或者如果您只是使用文字:
let differentStrings: Set = ["test", "test", "test1", "test2"]
然后只需获取count
:
let numDifferentStrings = differentStrings.count
听起来像是某人没有读过Swift语言指南;)
答案 1 :(得分:0)
为什么不制作第二个数组并只放入新的字符串?所以你遍历你的数组。如果该值不在array2中,则放入数组2.一旦完成整个第一个数组,就可以获得第二个数组的长度并获得答案。