1. 题目
2. 思路
- 通过ascill码值的转换,获取到对应的数字
- 再根据k的次数,对数字进行计算
- 因为数字要逐位计算,所以要对大于9的数字进行格式化,分成个位和十位,然后再分别计算(声明一个新函数
3. 实现
/**
* @param {string} s
* @param {number} k
* @return {number}
*/
var getLucky = function(s, k) {
let num = 0
for (let i = 0; i < s.length; i++) {
// console.log(i, s.charCodeAt(i) - 97 + 1);
let ascii = s.charCodeAt(i) - 97 + 1
num += sumNum(ascii)
}
while (k - 1 > 0) {
num = sumNum(num)
k--
}
return num
function sumNum(num) {
if (num < 10) return num
let newNum = 0
// 这里的代码好好理解...
while (num > 0) {
let ten = num % 10
newNum += ten
num = Math.floor(num / 10)
}
return newNum
}
};