##### 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 in number.

## 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).