From d5db5dd5d16be57fd83b60064f441aa28b9f4df4 Mon Sep 17 00:00:00 2001 From: AkifhanIlgaz Date: Fri, 6 Jan 2023 23:01:52 +0300 Subject: [PATCH] Create: 0402-remove-k-digits.rs / .ts /.js --- javascript/0402-remove-k-digits.js | 26 ++++++++++++++++++++++++ rust/0402-remove-k-digits.rs | 32 ++++++++++++++++++++++++++++++ typescript/0402-remove-k-digits.ts | 21 ++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 javascript/0402-remove-k-digits.js create mode 100644 rust/0402-remove-k-digits.rs create mode 100644 typescript/0402-remove-k-digits.ts diff --git a/javascript/0402-remove-k-digits.js b/javascript/0402-remove-k-digits.js new file mode 100644 index 000000000..3cab3e74c --- /dev/null +++ b/javascript/0402-remove-k-digits.js @@ -0,0 +1,26 @@ +/** + * @param {string} num + * @param {number} k + * @return {string} + */ +var removeKdigits = function (num, k) { + let stack = []; + for (ch of num) { + while (k > 0 && stack.length > 0 && stack.at(-1) > ch) { + k--; + stack.pop(); + } + stack.push(ch); + } + + let x = 0; + while (true) { + if (stack[x] !== '0') { + break; + } + x++; + } + stack = stack.slice(x, stack.length - k); + let res = stack.join(''); + return res ? res : '0'; +}; diff --git a/rust/0402-remove-k-digits.rs b/rust/0402-remove-k-digits.rs new file mode 100644 index 000000000..4d6a5ca72 --- /dev/null +++ b/rust/0402-remove-k-digits.rs @@ -0,0 +1,32 @@ +impl Solution { + pub fn remove_kdigits(num: String, k: i32) -> String { + let mut stack = vec![]; + let mut k = k as usize; + + for ch in num.chars() { + while let Some(&top) = stack.last() { + if k > 0 && top > ch { + k -= 1; + stack.pop(); + } else { + break; + } + } + + stack.push(ch); + } + + // stack = stack[..stack.len() - k].to_vec(); + while k != 0 { + stack.pop(); + k -= 1; + } + + let res: String = stack.into_iter().skip_while(|&ch| ch == '0').collect(); + if res.is_empty() { + "0".to_string() + } else { + res + } + } +} \ No newline at end of file diff --git a/typescript/0402-remove-k-digits.ts b/typescript/0402-remove-k-digits.ts new file mode 100644 index 000000000..2394cb3cb --- /dev/null +++ b/typescript/0402-remove-k-digits.ts @@ -0,0 +1,21 @@ +function removeKdigits(num: string, k: number): string { + let stack: string[] = []; + for (let ch of num) { + while (k > 0 && stack.length > 0 && stack[stack.length - 1] > ch) { + k--; + stack.pop(); + } + stack.push(ch); + } + + let x = 0; + while (true) { + if (stack[x] !== '0') { + break; + } + x++; + } + stack = stack.slice(x, stack.length - k); + let res = stack.join(''); + return res ? res : '0'; +}