zoukankan      html  css  js  c++  java
  • Delete Digits

    Given string A representative a positive integer which has N digits, remove any k digits of the number, the remaining digits are arranged according to the original order to become a new positive integer.

    Find the smallest integer after remove k digits.

    N <= 240 and k <= N,

    Example

    Given an integer A = "178542", k = 4

    return a string "12"

    Runtime: 13ms.

     1 class Solution {
     2 public:
     3     /**
     4      *@param A: A positive integer which has N digits, A is a string.
     5      *@param k: Remove k digits.
     6      *@return: A string
     7      */
     8     string DeleteDigits(string A, int k) {
     9         // wirte your code here
    10         
    11         // find the first decrease index and erase index - 1
    12         // continue with the new string
    13         if (k == A.size()) return "";
    14         
    15         int count = 0;
    16         while (count++ < k) {
    17             bool erased = false;
    18             for (int i = 1; i < A.size(); i++) {
    19                 if (A[i] < A[i - 1]) {
    20                     A.erase(i - 1, 1);
    21                     erased = true;
    22                     break;
    23                 }
    24             }
    25             if (!erased) A.erase(A.size() - 1, 1);
    26         }
    27         // ensure that there is no leading 0s in A
    28         int i = 0;
    29         while (i < A.size() && A[i] == '0') i++;
    30         return A.substr(i, A.size() - i);
    31     }
    32 };
  • 相关阅读:
    简单对拍
    搜索感想
    L1434滑雪
    记忆化搜索
    L3956棋盘
    USACO 数字三角形
    枚举顺序
    蓝桥计算
    用户态和内核态IO过程
    Mybatis的结果集中的Do要不要有setter
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/5805259.html
Copyright © 2011-2022 走看看