python 2.7で確認しました。
1.bitTestに渡された文字列を印字
2.その文字列を1文字ずつ配列に格納し、文字位置を反転した結果を表示
3.上記2の配列を順に検索し、0が連続している最小置、最大値を記憶する
4.その結果を印字
>上記のbitdata2の場合、最小値:bit20、最大値:bit26
これは、最小値:bit19、最大値:bit25の誤りと思われる。
python2.7
1def bitTest(bits):
2 print bits
3 bl = list(bits)
4 bl.reverse()
5 print bl
6 count = 0
7 count_max = 0
8 start_max =0
9 end_max = 0
10 for i,c in enumerate(bl):
11 if c == '0':
12 if count == 0:
13 start = i
14 count += 1
15 end = i
16 if count > count_max:
17 start_max = start
18 end_max = end
19 count_max = count
20 else:
21 count = 0
22 print "最小値:bit",start_max,"最大値:bit",end_max
23bitdata1 = '11110000111110000010111111'
24bitdata2 = '00000001111100000101111111'
25bitTest(bitdata1)
26bitTest(bitdata2)
27
実行結果
11110000111110000010111111
['1', '1', '1', '1', '1', '1', '0', '1', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '0', '0', '0', '0', '1', '1', '1', '1']
最小値:bit 8 最大値:bit 12
00000001111100000101111111
['1', '1', '1', '1', '1', '1', '1', '0', '1', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0']
最小値:bit 19 最大値:bit 25