current position:Home>leetcode 1945. Sum of Digits of String After Convert(python)

leetcode 1945. Sum of Digits of String After Convert(python)

2022-01-31 06:03:32 Wang Daya

「 This is my participation 11 The fourth of the yuegengwen challenge 9 God , Check out the activity details :2021 One last more challenge

describe

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.
 Copy code 

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.
 Copy code 

Example 3:

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

Note:

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

analysis

According to the meaning , Is to give a string that is all lowercase English letters s , And an integer k .

First, let's put the string s Every letter in the is converted into a number , for example a To 1 ,b To 2 , And so on . Then splice the obtained numbers from left to right into a string , Then add each number in the string to get and replace the string , Do this k Time , Return the final result . The idea is simple :

  • Initialization result result Is an empty string
  • take s Each character in is converted into a numeric string and spliced in order result after
  • while loop k Time , The sum obtained by adding each character into a number , Then change it into a string and assign it to result , meanwhile k Minus one , Continue to cycle through the operation
  • Loop result return result

answer

class Solution(object):
    def getLucky(self, s, k):
        """
        :type s: str
        :type k: int
        :rtype: int
        """
        result = ""
        for i in s:
            result += str(ord(i)-96)
        while k:
            result = str(sum([int(c) for c in result]))
            k-=1
        return result
        
        

        	      
		
 Copy code 

Running results

Runtime: 20 ms, faster than 96.63% of Python online submissions for Sum of Digits of String After Convert.
Memory Usage: 13.6 MB, less than 10.11% of Python online submissions for Sum of Digits of String After Convert.
 Copy code 

Original link :leetcode.com/problems/su…

Your support is my greatest motivation

copyright notice
author[Wang Daya],Please bring the original link to reprint, thank you.
https://en.pythonmana.com/2022/01/202201310603310020.html

Random recommended