Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/2259.html
2259. Remove Digit From Number to Maximize Result
- Difficulty: Easy.
- Related Topics: String, Greedy, Enumeration.
- Similar Questions: Remove K Digits, Remove Vowels from a String, Second Largest Digit in a String.
Problem
You are given a string number
representing a positive integer and a character digit
.
Return the resulting string after removing **exactly one occurrence of digit
from number
such that the value of the resulting string in decimal form is maximized**. The test cases are generated such that digit
occurs at least once in number
.
Example 1:
Input: number = "123", digit = "3"
Output: "12"
Explanation: There is only one '3' in "123". After removing '3', the result is "12".
Example 2:
Input: number = "1231", digit = "1"
Output: "231"
Explanation: We can remove the first '1' to get "231" or remove the second '1' to get "123".
Since 231 > 123, we return "231".
Example 3:
Input: number = "551", digit = "5"
Output: "51"
Explanation: We can remove either the first or second '5' from "551".
Both result in the string "51".
Constraints:
-
2 <= number.length <= 100
-
number
consists of digits from'1'
to'9'
. -
digit
is a digit from'1'
to'9'
. -
digit
occurs at least once innumber
.
Solution (Java, C++, Python)
-
class Solution { public String removeDigit(String number, char digit) { int index = 0; int n = number.length(); for (int i = 0; i < n; i++) { if (number.charAt(i) == digit) { index = i; if (i < n - 1 && digit < number.charAt(i + 1)) { break; } } } number = number.substring(0, index) + number.substring(index + 1); return number; } } ############ class Solution { public String removeDigit(String number, char digit) { int last = -1; int n = number.length(); for (int i = 0; i < n; ++i) { char d = number.charAt(i); if (d == digit) { last = i; if (i + 1 < n && d < number.charAt(i + 1)) { break; } } } return number.substring(0, last) + number.substring(last + 1); } }
-
class Solution: def removeDigit(self, number: str, digit: str) -> str: return max( number[:i] + number[i + 1 :] for i, d in enumerate(number) if d == digit ) ############ # 2259. Remove Digit From Number to Maximize Result # https://leetcode.com/problems/remove-digit-from-number-to-maximize-result/ class Solution: def removeDigit(self, number: str, digit: str) -> str: res = "" for i, x in enumerate(number): if x == digit: res = max(res, number[:i] + number[i + 1:]) return res
-
class Solution { public: string removeDigit(string number, char digit) { int n = number.size(); int last = -1; for (int i = 0; i < n; ++i) { char d = number[i]; if (d == digit) { last = i; if (i + 1 < n && number[i] < number[i + 1]) { break; } } } return number.substr(0, last) + number.substr(last + 1); } };
-
func removeDigit(number string, digit byte) string { last := -1 n := len(number) for i := range number { if number[i] == digit { last = i if i+1 < n && number[i] < number[i+1] { break } } } return number[:last] + number[last+1:] }
-
function removeDigit(number: string, digit: string): string { const n = number.length; let last = -1; for (let i = 0; i < n; ++i) { if (number[i] === digit) { last = i; if (i + 1 < n && number[i] < number[i + 1]) { break; } } } return number.substring(0, last) + number.substring(last + 1); }
-
class Solution { /** * @param String $number * @param String $digit * @return String */ function removeDigit($number, $digit) { $max = 0; for ($i = 0; $i < strlen($number); $i++) { if ($number[$i] == $digit) { $tmp = substr($number, 0, $i).substr($number, $i + 1); if ($tmp > $max) $max = $tmp; } } return $max; } }
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(n).