En ese momento, pensé que los datos de 10 ^ 8 se agotarían si los simulaba directamente, así que no pensé en ello, sino que usé la violencia. Parece que todavía pienso demasiado. Si simulo directamente, la idea es muy clara, siempre y cuando dos anidamientos de 0 a 10. Recorra cada número para encontrar los valores máximo y mínimo. el código se muestra a continuación:
classSolution{
public:intmaxDiff(int num){
string s =to_string(num);int maxi = INT_MIN, mini = INT_MAX;for(int i =0; i <10;++i){
for(int j =0; j <10;++j){
string t = s;if(j==0&&t[0]==i)continue;for(char& c: t)if(c == i +'0')
c = j +'0';int dd =stoi(t);if(dd ==0)continue;
maxi =max(maxi, dd);
mini =min(mini, dd);}}return maxi - mini;}};