リストから最大の数をつくる(largest formed number)

largest fromed number in a list python – StackOverflow

Pythonのsorted関数は高機能なので,簡単.

class Solution:
    def __init__(self, n=None):
        if n is None:
            self.n = None
        else:
            if hasattr(n, '__iter__'):
                self.n = [str(x) for x in n if str(x).isdigit()]
            else:
                self.n = str(n)
        
    def __str__(self):
        return self.n
    
    def __call__(self):
        return ''.join(self._sort(self.n))
    
    def _sort(self, n):
        return sorted(n, key=lambda x: (x[0], x), reverse=True)
    
    def largestNumber(self, n):
        if hasattr(n, '__iter__'):
            n = [str(x) for x in n if str(x).isdigit()]
        else:
            return n
        return ''.join(self._sort(n))


if __name__ == "__main__":
    print(Solution().largestNumber([3, 30, 34, 5, 9]))

9534303

広告
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中