36 lines
896 B
Python
36 lines
896 B
Python
#
|
|
# The number of valid combinations of a strings for given input array a[],
|
|
# where a=>1, z => 26, and 0 <= a[i] <= 9
|
|
# {1,1,1} => {aaa, ak, ka} => 3
|
|
# {1,1,0} => {aj} => 1 "/>
|
|
#
|
|
|
|
|
|
def valid_comb_aux(s, p, b, e, dyn):
|
|
if b in dyn:
|
|
print("dyn", p)
|
|
return dyn[b]
|
|
if b == e:
|
|
print("fin", p)
|
|
return 1
|
|
count = 0
|
|
for i in range(b+1, e+1):
|
|
if 0 < int(s[b:i]) and int(s[b:i]) <= (ord('z')-ord('a')+1):
|
|
p.extend(chr(ord('a')+int(s[b:i])-1))
|
|
count = count + valid_comb_aux(s, p, i, e, dyn)
|
|
p.pop()
|
|
dyn[b] = count
|
|
return count
|
|
|
|
|
|
def valid_comb(s):
|
|
dyn = {}
|
|
return valid_comb_aux(s, [], 0, len(s), dyn)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print(valid_comb("111"))
|
|
print(valid_comb("110"))
|
|
print(valid_comb("22222"))
|
|
# valid_comb("12131456879234522222")
|