25º concurso quincenal de LeetCode 5385. La diferencia máxima que se puede obtener cambiando un número entero

Enlace de tema

Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

  • 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:
class Solution {
    
    
public:
    int maxDiff(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;
    }
};

Supongo que te gusta

Origin blog.csdn.net/qq_43663263/article/details/105902786
Recomendado
Clasificación