182. Delete Digits

題目

https://www.lintcode.com/problem/delete-digits/description?_from=ladder&&fromId=2

實現

  1. 從 0 到 k
  2. 每次都遍歷數組,如果發現 A[i] > A[i + 1],即遞減,那麼刪掉 A[i]
  3. 如果都是遞增,那麼就要 A.pop()
  4. 最後要去掉前面可能出現的 '0'

代碼

class Solution:
    """
    @param A: A positive integer which has N digits, A is a string
    @param k: Remove k digits
    @return: A string
    """
    def DeleteDigits(self, A, k):
        A = list(A)

        while k > 0:
            has_deleted = False
            for i in range(len(A) - 1):
                if A[i] > A[i + 1]:
                    del A[i]
                    has_deleted = True
                    break

            if not has_deleted and len(A) > 1:
                A.pop()

            k -= 1

        while len(A) > 0 and A[0] == '0':
            del A[0]

        return ''.join(A)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章