You are given a very large integer n, represented as a string, and an integer digit x. The digits in n and the digit x are in the
inclusive range [1, 9], and n may represent a negative number.
You want to maximizen’ s numerical value by inserting x anywhere in the decimal representation of n. You cannot insert x to the left of the negative sign.
For example, if n = 73 and x = 6, it would be best to insert it between 7 and 3, making n = 763.
If n = -55 and x = 2, it would be best to insert it before the first 5, making n = -255.
Return _a string representing themaximum value of _n after the insertion.
To maximize the value, insert x at the earliest position where it increases the value. For positive numbers, insert before the first digit less than x. For negative numbers, insert before the first digit greater than x.
classSolution {
public: string maxValue(string n, int x) {
int i =0;
if (n[0] =='-') {
i =1;
while (i < n.size() && n[i] <='0'+ x) ++i;
} else {
while (i < n.size() && n[i] >='0'+ x) ++i;
}
return n.substr(0, i) + to_string(x) + n.substr(i);
}
};
classSolution {
public String maxValue(String n, int x) {
int i = 0;
if (n.charAt(0) =='-') {
i = 1;
while (i < n.length() && n.charAt(i) <= (char)('0'+x)) i++;
} else {
while (i < n.length() && n.charAt(i) >= (char)('0'+x)) i++;
}
return n.substring(0, i) + x + n.substring(i);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
classSolution {
funmaxValue(n: String, x: Int): String {
var i = 0if (n[0] =='-') {
i = 1while (i < n.length && n[i] <= ('0'+x)) i++ } else {
while (i < n.length && n[i] >= ('0'+x)) i++ }
return n.substring(0, i) + x + n.substring(i)
}
}
1
2
3
4
5
6
7
8
9
10
defmax_value(n: str, x: int) -> str:
i =0if n[0] =='-':
i =1while i < len(n) and int(n[i]) <= x:
i +=1else:
while i < len(n) and int(n[i]) >= x:
i +=1return n[:i] + str(x) + n[i:]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
impl Solution {
pubfnmax_value(n: String, x: i32) -> String {
let b = n.as_bytes();
letmut i =0;
if b[0] ==b'-' {
i =1;
while i < b.len() && b[i] <=b'0'+ x asu8 { i +=1; }
} else {
while i < b.len() && b[i] >=b'0'+ x asu8 { i +=1; }
}
letmut res = n[..i].to_string();
res.push_str(&x.to_string());
res.push_str(&n[i..]);
res
}
}
1
2
3
4
5
6
7
8
9
10
11
12
classSolution {
maxValue(n: string, x: number):string {
leti=0;
if (n[0] ==='-') {
i=1;
while (i<n.length&&+n[i] <=x) i++;
} else {
while (i<n.length&&+n[i] >=x) i++;
}
returnn.slice(0, i) +x+n.slice(i);
}
}