加载中...
1945-字符串转化后的各位数字之和(Sum of Digits of String After Convert)
发表于:2021-12-03 | 分类: 简单
字数统计: 922 | 阅读时长: 4分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/sum-of-digits-of-string-after-convert

英文原文

You are given a string s consisting of lowercase English letters, and an integer k.

First, convert s into an integer by replacing each letter with its position in the alphabet (i.e., replace 'a' with 1, 'b' with 2, ..., 'z' with 26). Then, transform the integer by replacing it with the sum of its digits. Repeat the transform operation k times in total.

For example, if s = "zbax" and k = 2, then the resulting integer would be 8 by the following operations:

  • Convert: "zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124
  • Transform #1: 262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17
  • Transform #2: 17 ➝ 1 + 7 ➝ 8

Return the resulting integer after performing the operations described above.

 

Example 1:

Input: s = "iiii", k = 1
Output: 36
Explanation: The operations are as follows:
- Convert: "iiii" ➝ "(9)(9)(9)(9)" ➝ "9999" ➝ 9999
- Transform #1: 9999 ➝ 9 + 9 + 9 + 9 ➝ 36
Thus the resulting integer is 36.

Example 2:

Input: s = "leetcode", k = 2
Output: 6
Explanation: The operations are as follows:
- Convert: "leetcode" ➝ "(12)(5)(5)(20)(3)(15)(4)(5)" ➝ "12552031545" ➝ 12552031545
- Transform #1: 12552031545 ➝ 1 + 2 + 5 + 5 + 2 + 0 + 3 + 1 + 5 + 4 + 5 ➝ 33
- Transform #2: 33 ➝ 3 + 3 ➝ 6
Thus the resulting integer is 6.

Example 3:

Input: s = "zbax", k = 2
Output: 8

 

Constraints:

  • 1 <= s.length <= 100
  • 1 <= k <= 10
  • s consists of lowercase English letters.

中文题目

给你一个由小写字母组成的字符串 s ,以及一个整数 k

首先,用字母在字母表中的位置替换该字母,将 s 转化 为一个整数(也就是,'a'1 替换,'b'2 替换,... 'z'26 替换)。接着,将整数 转换 为其 各位数字之和 。共重复 转换 操作 k

例如,如果 s = "zbax"k = 2 ,那么执行下述步骤后得到的结果是整数 8

  • 转化:"zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124
  • 转换 #1262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17
  • 转换 #217 ➝ 1 + 7 ➝ 8

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

 

示例 1:

输入:s = "iiii", k = 1
输出:36
解释:操作如下:
- 转化:"iiii" ➝ "(9)(9)(9)(9)" ➝ "9999" ➝ 9999
- 转换 #1:9999 ➝ 9 + 9 + 9 + 9 ➝ 36
因此,结果整数为 36 。

示例 2:

输入:s = "leetcode", k = 2
输出:6
解释:操作如下:
- 转化:"leetcode" ➝ "(12)(5)(5)(20)(3)(15)(4)(5)" ➝ "12552031545" ➝ 12552031545
- 转换 #1:12552031545 ➝ 1 + 2 + 5 + 5 + 2 + 0 + 3 + 1 + 5 + 4 + 5 ➝ 33
- 转换 #2:33 ➝ 3 + 3 ➝ 6
因此,结果整数为 6 。

 

提示:

  • 1 <= s.length <= 100
  • 1 <= k <= 10
  • s 由小写英文字母组成

通过代码

高赞题解

力扣周赛251

字符串转化后的各位数字之和 - 力扣 (LeetCode) 竞赛

​ 第一道题。

​ 给我们一串字符,要咱转成数字求各个位置相加,把字母转化成数字时要注意’z’(26)这种字母占两位,不要搞错了。然后就是各个位置相加,也很简单。

​ 类似于大数模拟,但比大数模拟要简单很多,第一题嘛,dddd,不要多想,敲就完事了。

class Solution {
public:
    int getLucky(string s, int k) {
        const int length = s.size();
        int ans = 0;   //存储最终答案
        for(int i = 0; i < length; ++i){  //因为k大于1,所以我们转换完一个字母就直接加进去
            int tmp = s[i] - 'a' + 1; //转化出来的数字
            ans += (tmp % 10); //小于十的部分
            ans += (tmp / 10); //大于十的部分
        }
        while(--k){ //因为我们已经进行了一次操作,所以这里是--k
            int tmp = ans;
            ans = 0;
            while(tmp){
                ans += (tmp % 10); //把各个位置加给ans
                tmp /= 10;  
            }
        }
        return ans;
    }
};

统计信息

通过次数 提交次数 AC比率
7100 10762 66.0%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
1938-查询最大基因差(Maximum Genetic Difference Query)
下一篇:
1946-子字符串突变后可能得到的最大整数(Largest Number After Mutating Substring)
本文目录
本文目录