移掉K位數字

2021-09-28 16:40:36 字數 976 閱讀 9772

給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。

輸入: num = "1432219", k = 3

輸出: "1219"

解釋: 移除掉三個數字 4, 3, 和 2 形成乙個新的最小的數字 1219。

輸入: num = "10200", k = 1

輸出: "200"

解釋: 移掉首位的 1 剩下的數字為 200. 注意輸出不能有任何前導零。

輸入: num = "10", k = 2

輸出: "0"

解釋: 從原數字移除所有的數字,剩餘為空就是0。

單調棧,這裡是單調遞增棧,不符合建棧條件的數移除,直到移除k個數,若單調棧建完了還沒有移夠k個數,則從棧尾開始移除,因為此時棧尾的數最大,直到移夠k個數,注意最後的結果開頭可能是0,移除結果開頭所有的0.

string removekdigits(string num, int k)  else 

data.pop();

k--;

}data.push(num[i]);

}} string res;

while (!data.empty())

reverse(res.begin(), res.end());

int index = 0;

while (res.length() > 0 && res[index] == '0')

res = res.substr(index);

if (k <= res.length())

if (res.length() == 0)

return res;

}

移掉K位數字

移掉k位數字 給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。注意 示例 1 輸入 num 1432219 k 3 輸出 1219 解釋 移除掉三個數字 4,3,和 2 形成乙個新的最小的數字 1219。示例 2 輸入 num 10200 k 1 輸出 200 ...

移掉k位數字

給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。注意 num 的長度小於 10002 且 k。num 不會包含任何前導零。示例 1 輸入 num 1432219 k 3 輸出 1219 解釋 移除掉三個數字 4,3,和 2 形成乙個新的最小的數字 1219。示例...

Leetcode 移掉k位數字

給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。注意 示例 1 輸入 num 1432219 k 3 輸出 1219 解釋 移除掉三個數字 4,3,和 2 形成乙個新的最小的數字 1219。示例 2 輸入 num 10200 k 1 輸出 200 解釋 移掉首位...