废话不多说直接上代码吧
/// 统计字符串中出现最多的字符和次数
/// - 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"]
如有优化,欢迎留言,大家加油!!!
网友评论