字符串重复计数

Posted

技术标签:

【中文标题】字符串重复计数【英文标题】: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 【参考方案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”只是增加值的编号。从技术上讲,它重写了旧值具有递增的值。它有助于您更好地理解它吗?:-)

以上是关于字符串重复计数的主要内容,如果未能解决你的问题,请参考以下文章

我越来越无法使用字符串类型的参数调用计数 [重复]

BigQuery拆分列并获取每个子字符串的计数[重复]

JS计数重复出现

C中输入的字符计数[重复]

hihoCoder #1783 又一个重复计数

java中去掉字符串数组中重复的字符串(不改变原有顺序)并计数(不同的字符串重复了多少次)