【问题标题】:String Duplicate count字符串重复计数
【发布时间】:2022-01-02 23:23:45
【问题描述】:

我正在尝试通过使用哈希映射从输入字符串中打印重复的计数。我不确定为什么解决方案不起作用。我来自python背景 //编写一个高效的程序来打印输入字符串中的所有重复项及其计数

func letters(inputs: String)->[Character:Int] {
    var result = [Character:Int]()
    for input in inputs {
        if let value = result[input] {
            return [input : value]
        }
        else {
            result[input] = (result[input] ?? 0)+1
        }
    }
    return [:]
}
letters(inputs:"geeksforgeeks")
["e": 1]

【问题讨论】:

  • 循环中的if 条件没有意义,循环内需要的所有内容都是result[input] = result[input, default: 0] + 1,然后循环后需要return result

标签: arrays swift hashmap


【解决方案1】:

试试这个:

func letters(inputs: String) -> [Character:Int] {
    var result = [Character:Int]()
    for input in inputs{
        if let value = result[input] {
            result[input] = value + 1
        }
        else{
            result[input] = 1
        }
    }
    
    return result
}

【讨论】:

  • 感谢您,jurah,为您提供漂亮的解决方案。请您检查一下我对您的代码的描述是否正确? if let 检查该值是否存在,如果存在,则将其出现存储在 hashmap 中。如果不存在,则将其添加到字典中。我说的对吗?
  • @TomHiddleston,实际上您的大部分描述都是正确的。它是这样工作的:第一个“if let value”检查一个值是否存在,该值是一种整数类型,这个“result[input] = value + 1”只是增加值的编号。从技术上讲,它重写了旧值具有递增的值。它有助于您更好地理解它吗?:-)
猜你喜欢
  • 1970-01-01
  • 2017-09-03
  • 2019-04-12
  • 2021-03-25
  • 2013-11-28
  • 2016-07-01
  • 1970-01-01
  • 2016-05-20
相关资源
最近更新 更多