You are given a string s
consisting of lowercase English letters, and an integer k
. First, you need to convert each character of s
into its position in the alphabet (i.e., convert ‘a’ to 1, ‘b’ to 2, …, ‘z’ to 26). Then, transform the resulting number by summing its digits repeatedly, for a total of k
times. Return the resulting integer after performing the transformations.
s = "leetcode"
and k = 2
, the steps would be:
l=12, e=5, e=5, t=20, c=3, o=15, d=4, e=5
.12552031545
.1+2+5+5+2+0+3+1+5+4+5 = 33
.3+3 = 6
.6
.s
is an empty string? (Although not explicit, we’ll assume s
is non-empty based on typical constraints.)s
and value of k
?Here’s the Python code to solve this problem:
def getLucky(s: str, k: int) -> int:
# Convert the string to a number formed by the position in the alphabet
num_str = ''.join(str(ord(char) - ord('a') + 1) for char in s)
# Function to sum digits of a number in string form
def sum_of_digits(n: str) -> int:
return sum(int(char) for char in n)
# Start with the massive number string
curr_str = num_str
# Perform the sum of digits process k times
for _ in range(k):
curr_str = str(sum_of_digits(curr_str))
return int(curr_str)
# Example usage
s = "leetcode"
k = 2
print(getLucky(s, k)) # Output: 6
s
.k
times to the initial large number string.k
transformations, convert the final string back to an integer and return it.n
is the length of the string s
.n
is the original string length.k
times introduces an additional factor.Thus, the total time complexity is about O(kn), where n
is the length of the input string and k
is the number of repetitions.
This ensures efficiency even for reasonable input sizes.
Got blindsided by a question you didn’t expect?
Spend too much time studying?
Or simply don’t have the time to go over all 3000 questions?