/* * @Author: LetMeFly * @Date: 2025-06-15 22:35:58 * @LastEditors: LetMeFly.xyz * @LastEditTime: 2025-06-17 23:50:02 */ classSolution { private: inlineboolisIn(string s, char c){ for (char t : s) { if (t == c) { returntrue; } } returnfalse; }
inline string replace(string s, char a, char b){ for (int i = 0; i < s.size(); i++) { if (s[i] == a) { s[i] = b; } } return s; } public: intmaxDiff(int num){ int m = 100000000, M = 0; string s = to_string(num); for (int a = 0; a < 10; a++) { if (!isIn(s, '0' + a)) { continue; } for (int b = 0; b < 10; b++) { string x = replace(s, '0' + a, '0' + b); if (x[0] == '0') { continue; } int val = atoi(x.c_str()); m = min(m, val); M = max(M, val); } } return M - m; } };
intfirstNot01(string& s){ for (int i = 0; i < s.size(); i++) { if (s[i] > '1') { return i; } } return-1; }
intchange(string s, char a, char b){ for (int i = 0; i < s.size(); i++) { if (s[i] == a) { s[i] = b; } } returnatoi(s.c_str()); } public: intmaxDiff(int num){ int M, m; string s = to_string(num); int index = firstNot9(s); M = index < 0 ? num : change(s, s[index], '9'); if (s[0] != '1') { m = change(s, s[0], '1'); } else { index = firstNot01(s); m = index < 0 ? num : change(s, s[index], '0'); } return M - m; } };
''' Author: LetMeFly Date: 2025-06-19 10:16:46 LastEditors: LetMeFly.xyz LastEditTime: 2025-06-19 10:35:59 ''' # M: !9 -> 9 # m: first == 1 ? (!01 -> 0) : (first->1) classSolution: deffirstN9(self, s: str) -> int: for i, c inenumerate(s): if c != '9': return i return -1
deffirstN01(self, s: str) -> int: for i, c inenumerate(s): if c != '0'and c != '1': return i return -1
defchange(self, s: str, a: str, b: str) -> int: li = list(s) for i, c inenumerate(li): if c == a: li[i] = b returnint(''.join(li))
defmaxDiff(self, num: int) -> int: M = m = 0 s = str(num) index = self.firstN9(s) M = num if index < 0elseself.change(s, s[index], '9') if s[0] == '1': index = self.firstN01(s) m = num if index < 0elseself.change(s, s[index], '0') else: m = self.change(s, s[0], '1') return M - m
privateintnot01(String s) { for (inti=0; i < s.length(); i++) { if (s.charAt(i) > '1') { return i; } } return -1; }
privateintreplace(String s, char a, char b) { return Integer.parseInt(s.replace(a, b)); } publicintmaxDiff(int num) { int M, m; Strings= String.valueOf(num); intindex= not9(s); M = index == -1 ? num : replace(s, s.charAt(index), '9'); if (s.charAt(0) == '1') { index = not01(s); m = index == -1 ? num : replace(s, s.charAt(index), '0'); } else { m = replace(s, s.charAt(0), '1'); } return M - m; } }
// M: !9->9 // m: first==1 ? !01->0 : first->1 funcmaxDiff(num int)int { s := strconv.Itoa(num) // 不可!: s := string(num) M, m := num, num change := func(s string, a, b byte)int { ans, _ := strconv.Atoi(strings.ReplaceAll(s, string(a), string(b))) return ans } for i := range s { if s[i] != '9' { M = change(s, s[i], '9') break } } if s[0] == '1' { for i := range s { if s[i] > '1' { m = change(s, s[i], '0') break } } } else { m = change(s, s[0], '1') } return M - m }