【力扣刷题】字符串转化后的各位数字之和

题目描述

给你一个由小写字母组成的字符串 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

返回执行上述操作后得到的结果整数。

题目分析

  1. 把字符串的各个字符转为数字字符串;
  2. 重复 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;
};

运行结果

经验分享 程序员 微信小程序 职场和发展