检查数组中不同字符串的数量

时间:2016-12-29 18:59:03

标签: arrays swift loops for-loop

我正在尝试计算数组中不同字符串的数量。例如,我的数组是:

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是否是内循环中的最后一个元素。

如何获取数组中不同字符串的数量?

2 个答案:

答案 0 :(得分:2)

如果排序无关紧要,只需制作Set

let differentStrings = Set(stringArray)

或者如果您只是使用文字:

let differentStrings: Set = ["test", "test", "test1", "test2"]

然后只需获取count

let numDifferentStrings = differentStrings.count

听起来像是某人没有读过Swift语言指南;)

答案 1 :(得分:0)

为什么不制作第二个数组并只放入新的字符串?所以你遍历你的数组。如果该值不在array2中,则放入数组2.一旦完成整个第一个数组,就可以获得第二个数组的长度并获得答案。