【问题标题】:Checking Number of Different Strings in an Array [duplicate]检查数组中不同字符串的数量
【发布时间】:2016-12-29 18:59:03
【问题描述】:

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

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,因为如果 str2 是内部循环中的最后一个元素,我没有检查 else 语句。

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

【问题讨论】:

  • 单线:let ct = Set(stringArray).count
  • @matt 甚至不需要NSCountedSet。最好使用原生 Swift
  • @Alexander 你及时抓住了我,我仍然可以编辑它!谢谢
  • 这个问题已关闭 @DanLevy。没错。下一次,先搜索。请。

标签: arrays swift loops for-loop


【解决方案1】:

如果订购无关紧要,只需发送Set

let differentStrings = Set(stringArray)

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

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

然后只需获取它的count

let numDifferentStrings = differentStrings.count

听起来好像有人没有阅读 Swift 语言指南 ;)

【讨论】:

    【解决方案2】:

    为什么不创建第二个数组并只将新字符串放入其中?所以你遍历你的数组。如果值不在array2中,则放入array 2。一旦你通过了整个第一个数组,你就可以得到第二个数组的长度并得到你的答案。

    【讨论】:

    • 因为二次时间复杂度会让小猫哭泣
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多