Às vezes, podemos ter um problema em que solicitamos obter a diferença máxima de 2 números de Strings, mas com uma restrição de ter os números em sucessão. Este tipo de problema pode ocorrer durante a programação competitiva. Vamos discutir algumas maneiras pelas quais esse problema pode ser resolvido.

Método # 1: Usando max() + zip()+ compreensão de lista
Este problema pode ser resolvido usando a combinação das três funções acima em que a função max pode ser usada para obter o valor máximo, zip e compreensão de lista fazendo a tarefa de estender a lógica para toda a lista.

test_string = '6543452345456987653234'
print("The original string : " + str(test_string)) 
test_string = list(test_string) 
res = max(abs(int(a) - int(b)) for a, b in zip(test_string, test_string[1:])) 
print("The maximum consecutive difference is : " + str(res)) 
Resultado :
A string original: 6543452345456987653234
A diferença máxima consecutiva é: 3

 

Método 2: Usando max() + map() + operator.sub
O problema acima também pode ser resolvido usando outra combinação de funções. Nessa combinação, as funções de mapa executam a tarefa de estender a lógica para toda a lista e o suboperador é usado para fazer a diferença.



from operator import sub 
test_string = '6543452345456987653234'
print("The original string : " + str(test_string)) 
res = max(map(sub, map(int, test_string), map(int, test_string[1:]))) 
print("The maximum consecutive difference is : " + str(res)) 
Resultado :
A string original: 6543452345456987653234
A diferença máxima consecutiva é: 3