1

Pythonで整数の偶数の最長シーケンスを取得する最も効率的な方法は何ですか? たとえば、番号が 2456890048 の場合、最長のシーケンスは 0048 になります。

最長シーケンスを決定するために整数を文字列に変換する必要がありますか? それとも、リストに変換してから、各項目のインデックスに基づいて、どのシーケンスが最も長いかを判断する必要がありますか? または、私が気付いていないより効率的な方法があります(私はPythonにまったく慣れていないため、この問題に取り組む最善の方法が何であるかわかりません)。

4

3 に答える 3

2

効率の良い方法の一つだと思います

def longest(i):
    curMax = m = 0

    while i != 0:
        d = i % 10 % 2
        i = i / 10
        if d == 0:
            curMax += 1
        else:
            m = max(m, curMax)
            curMax = 0

    return max(m, curMax)

print longest(2456890048)
于 2013-10-26T12:23:39.730 に答える
1

正規表現を使用して偶数のすべての実行を抽出し、最大を使用して最長を見つけることができます。

import re

def longest_run(d):
    return max(re.findall('[02468]+', str(d)), key=len)
于 2013-10-26T12:39:48.050 に答える