解题思路
1、将字符串转成字典并统计各字符出现次数
2、由于题目要求输入的字符数是4的倍数,所以计算各方向需要的次数=字符串总长度/4
3、遍历字典,累加字典里已有方向超出各方向需要次数的次数,就是最终需要变换的次数。
// 获得完美走位
func HW2023011() {
// 测试用例
// let inputStr = "AASW"
// let inputStr = "AAAA"
// let inputStr = "AASAAAAA"
// let inputStr = "ASDW"
// 开始代码
let inputStr = String(readLine()!)
// 使用高阶函数将字符串转成字典并统计各字符出现次数
let inputDic = inputStr.reduce(into: [Character: Int]()) { res, key in
res[key] = Int(res[key] ?? 0) + 1
}
let needCount = inputStr.count/4 // 由于题目要求输入的字符数是4的倍数,所以计算各方向需要的次数=字符串总长度/4
var res = 0 // 最终需要变换的次数
for (_, v) in inputDic {
// 累加inputDic里已有方向超出needCount的次数,就是res
if v > needCount {
res += (v-needCount)
}
}
print(res)
}
网友评论