我需要一个既可以将整数减少为一位数字又可以接受字符串的函数。使用reduce的变体也将被理解。
let dict: [Character:Int] = ["a": 1, "j":1, "s":1, "b":2, "k":2, "t":2, "c":3, "l":3, "u":3, "d":4, "m":4, "v":4, "e":5, "n":5, "w":5, "f":6, "o":6, "x":6, "g":7, "p":7, "y":7, "h":8, "q":8, "z":8, "i":9, "r":9]
此函数接受字符串并通过求和来减少,但不减少为一位。
func f1(_ str: String) -> Int {
return str.reduce(0) { $0 + (dict[$1] ?? 0) }
}
f1("lighthouse") //52
此函数减少为一位数字,但不接受字符串。
func f2(_ n: Int) -> Int {
return (1 + ((n-1) % 9))
}
f2(52) //7
最佳答案
您只需要在return语句中结合使用这两种方法:
return 1 + (str.reduce(0) {$0 + (dict[$1] ?? 0)} - 1) % 9
关于swift - 将一个键值中的整数相加,直到有一位数字为止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48512102/