Ich habe die folgende Funktion, die ich verwendet, um die Länge der Orte in einer binären Zahl zu finden, wo Nullen durch Einsen eingekapselt sind:Python Grund String Split-Methode Verhalten
def solution(N):
# write your code in Python 2.7
# convert to binary
binary = bin(N)[2:] # results prefixed with '0b'
# special case of no zeros
if '0' not in str(binary):
print('No binary gap in %s'% str(binary))
return 0
# special case of all zeros after first 1
if '1' not in str(binary)[1:]:
print('No binary gap in %s'% str(binary))
return 0
# special case of N == 1 = 01
if N == 1:
print('No binary gap in %s'% str(binary))
return 0
bgaps = []
sbin = str(binary)
print(sbin)
spbin = sbin.split('1')
print(spbin)
for i in spbin:
if i == '': continue
bgaps.append(len(i))
return max(bgaps)
for N in [6,328,147,15,2,483,647]:
print(solution(N)
Die Ergebnisse dieser Zeichenfolge Split zeigen doesn‘ t immer eine ''
, wo das Trennzeichen verwendet wurde. Das passiert z.B. für 101001000
wo die Spaltung zurück
['', '0', '00', '000']
statt
['', '0','', '00', '', '000']
Ich vermute, dass dies mit einer besonderen Bedeutung von ‚01‘ zu tun hat, sondern das Trennzeichen ist ‚1‘. Irgendwelche Gedanken darüber, warum diese Trennung sich so verhält?
dies ist nicht 2.7 – Mangohero1
'Split' wirft das Trennzeichen weg:' "a, b, c" .split (',') == ["a", "b", "c"] '. – ForceBru