Учитывая последовательность символов, верните следующее в алфавитном порядке.Приращение символа с заданной последовательностью
Example: given 'A' it should return 'B', 'Z' -> 'AA', 'ZYZ' -> 'ZZA'
т.д.
Одной из важных ссылки с использованием по модулю и математику я нашел is in c#. Вместо того чтобы преобразовать его в python, я придумал свое решение.
Что было бы более эффективным алгоритмическим подходом, чем приведенное ниже?
import string
def increment_excel(s=''):
"""
A->B, Z->AA, AZ->BA, KZZ->LAA
"""
def wrapped(s):
if not s:
return string.uppercase[0]
ind = string.uppercase.index(s[-1])
if ind < len(string.uppercase) - 1:
return s[:-1] + string.uppercase[ind + 1]
return wrapped(s[:-1]) + string.uppercase[0]
return wrapped(s.upper().replace(' ',''))
increment_excel('TRYME') # -> 'TRYMF'
increment_excel('TRY ZZ') # -> 'TRZAA'
increment_excel('ABCC') # -> 'ABCD'
increment_excel('ZZ Z') # -> 'AAAA'
просто общее решение есть те были в базе-26 ... преобразовать в базу-10, а затем добавить к нему 1 ... снова преобразовать в базу-26 ... –
@ lokesh1729 есть одна маленькая проблема этот подход. Какая буква соответствует нулю? –
да, мы должны заботиться, когда число делится на ноль ... тогда нам нужно взять остаток как 26, а quotient = quotient-1 ... скажем 52 .. 52/26 = 2, поэтому q = 1, rem = 26, которое дает AZ –