如何求解与初始化器有关的确切匹配?

发布于 2025-01-17 17:20:29 字数 523 浏览 0 评论 0原文

func hasUniqueDigits(number: String) -> Bool {
    var numbers = [1, 2, 3, 4, 5, 6, 7]
    for i in 1...6 {
        var partOne = number.firstIndex(of: String.Element("\(i)"))
        var partTwo = String(numbers.firstIndex(of: Int(partOne))!)
        numbers.remove(at: partTwo)
    }
    if numbers.count == 1 {
        return true
    } else {
        return false

这是确定仅包含数字1-7的六位数数字是否包含所有唯一数字的函数。 示例:145327作品,114723不是因为它有两个,而183427不是因为它包含8个。 我已经随机键入!看看这是否是一个可选的问题,但这无效。您能让我知道热门解决此错误吗?

func hasUniqueDigits(number: String) -> Bool {
    var numbers = [1, 2, 3, 4, 5, 6, 7]
    for i in 1...6 {
        var partOne = number.firstIndex(of: String.Element("\(i)"))
        var partTwo = String(numbers.firstIndex(of: Int(partOne))!)
        numbers.remove(at: partTwo)
    }
    if numbers.count == 1 {
        return true
    } else {
        return false

This is a function for determining whether a six-digit number containing only the digits 1-7 contains all unique digits.
Examples: 145327 works, 114723 doesn't because it has two ones, and 183427 doesn't because it contains an 8.
I have typed in random !'s to see if it was an optional problem and that didn't work. Can you please let me know hot to fix this error?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

本宫微胖 2025-01-24 17:20:29

这不是您问题的直接答案,但是使用集合会容易得多。要检查字符串是否具有重复数字,您需要的只是检查字符串计数是否相同。要检查字符串是否只有允许的数字,您可以简单地检查数字字符集是否是数字字符集的子集:

func hasUniqueDigits(number: String) -> Bool {
    let set1 = Set(number)
    if number.count != set1.count { return false }
    return set1.isStrictSubset(of: Set("1234567"))
}

hasUniqueDigits(number: "145327")  // true
hasUniqueDigits(number: "114723")  // false
hasUniqueDigits(number: "183427")  // false

请注意,这也将返回一个空字符串的true。如果要确保此方法返回false,只需添加一个支票即可返回false,如果数字为空:

if number.count != set1.count || number.isEmpty { return false }

Not a direct answer to your question but it would be much easier to use sets. To check if the string have duplicated digits all you need is to check if the string count is the same of the character set count. To check if the string has only the allowed digits you can simply check if the number character set is a subset of the numbers character set:

func hasUniqueDigits(number: String) -> Bool {
    let set1 = Set(number)
    if number.count != set1.count { return false }
    return set1.isStrictSubset(of: Set("1234567"))
}

hasUniqueDigits(number: "145327")  // true
hasUniqueDigits(number: "114723")  // false
hasUniqueDigits(number: "183427")  // false

Note that this would return true for an empty string as well. If you want to make sure this method returns false just add a check to return false if number is empty:

if number.count != set1.count || number.isEmpty { return false }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文