【力扣刷题】字符串转化后的各位数字之和
题目描述
给你一个由小写字母组成的字符串 s ,以及一个整数 k 。
首先,用字母在字母表中的位置替换该字母,将 s 转化 为一个整数(也就是,a 用 1 替换,b 用 2 替换,… z 用 26 替换)。接着,将整数 转换 为其 各位数字之和 。共重复 转换 操作 k 次 。
例如,如果 s = "zbax" 且 k = 2 ,那么执行下述步骤后得到的结果是整数 8 :
-
转化:"zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124 转换 #1:262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17 转换 #2:17 ➝ 1 + 7 ➝ 8
返回执行上述操作后得到的结果整数。
题目分析
- 把字符串的各个字符转为数字字符串;
- 重复 k 次,遍历数字字符串计算总和。
题解代码
/** * @param {string} s * @param {number} k * @return {number} */ var getLucky = function (s, k) { let numstr = ; // 转化 for (let i = 0; i < s.length; i++) { numstr += s[i].charCodeAt(0) - 96; // a的ascii码是97 } // k次转换操作 let sum = 0; for (let i = 0; i < k; i++) { sum = 0; for (let j = 0; j < numstr.length; j++) { sum += parseInt(numstr[j]); } numstr = sum.toString(); } return sum; };
运行结果
上一篇:
92天倒计时,蓝桥杯省赛备赛攻略来啦~
下一篇:
AI编程软件会取代程序员吗?