移掉K位數字

2021-10-11 15:51:06 字數 1095 閱讀 8977

移掉k位數字

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

注意:

示例 1 :

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

輸出: "1219"

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

示例 2 :

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

輸出: "200"

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

示例 3 :

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

輸出: "0"

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

思路:

對於1a34和1b34,如果a>b,則1a34>1b34,所以從左往右遍歷

對於3421,刪掉4會使數字最小,因為4>2

利用單調棧,棧中元素遞增,如果當前元素比棧頂小,則刪除棧頂元素

public string removekdigits(string num, int k) 

stack.push(num.charat(i));

}while (k > 0)

stringbuilder sb = new stringbuilder();

while (!stack.isempty())

string ans = sb.reverse().tostring();

int i = 0;

while (i < ans.length() && ans.charat(i) == '0')

ans = ans.substring(i);

if (ans.isempty())

return ans;

}

移掉K位數字

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

移掉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 解釋 移掉首位...