swift 统计字符串中出现最多的字符和次数

废话不多说直接上代码吧

/// 统计字符串中出现最多的字符和次数
/// - Parameter str: 目标字符串
/// - Returns: maxCountChar:出现最多的字符  maxCount:出现字数  sameChar:相同数量的字符
func getAppearMaxCountChar(with str: String) -> (maxCountChar: String, maxCount: Int, sameChar: [String]) {
    
    assert(!str.isEmpty, "字符串不能为空")

    var tempDic: [String: Int] = [:]
    // 第一步 计算每个字符出现的次数
    for char in str.enumerated() {
        let key = "\(char.element)"
        if let count = tempDic[key] {
            tempDic[key] = count + 1
        } else {
            tempDic[key] = 1
        }
    }
  
    // 第二步 计算最大的数量
    var maxCount = 1
    for count in tempDic.values {
        maxCount = max(count, maxCount)
    }
    
    // 第三步 找出最大数量对应的字符
    var sameArray: [String] = []
    for (key, value) in tempDic {
        if value == maxCount {
            sameArray.append(key)
        }
    }
    // 如果是出现相同数量的字符 那么随便取一个返回 具体结果可在sameArray数组中查询
    return (sameArray.first!, maxCount, sameArray)
}

使用

let result = getAppearMaxCountChar(with: "aaabbbbbc")
print("出现最多的字符是\(result.maxCountChar),出现次数为\(result.maxCount)次, 相同的次数字符数组为\(result.sameChar)")
// 结果
// 出现最多的字符是b,出现次数为5次, 相同的次数字符数组为["b"]

如有优化,欢迎留言,大家加油!!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容