010 --- ejercer fuerza hebilla para convertir una cadena en un entero

Descripción Asunto:

https://leetcode-cn.com/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/

Escribir una StrToInt función, para lograr esta función convierte la cadena a un entero. No se puede utilizar atoi u otras funciones de biblioteca similares.

En primer lugar, la función se iniciará con un carácter de espacio descarta inútil si es necesario, hasta que el hallazgo al primer carácter no-espacio hasta ahora.

Cuando nos encontramos con el primer carácter no-espacio es un número positivo o negativo, la combinación de los símbolos lo más posible con números consecutivos hasta más tarde, como el signo de número entero; si el primer carácter no-espacio es figuras, que directamente después de los caracteres numéricos continuos se combinan para formar un entero.

Además de la cadena después de una parte entera válida también pueden existir caracteres adicionales, estos caracteres pueden ser ignorados, no deben afectar a una función.

Nota: si la cadena de caracteres en el primer carácter que no sea espacio no es una cadena de caracteres entero válido está vacío o contiene sólo la cadena de caracteres de espacio en blanco, entonces no tendrá que ser una función de la conversión.

En cualquier caso, si la función no puede convertir de manera efectiva, se devuelve 0.

Descripción:

Suponemos que el medio ambiente puede almacenar 32 bits de tamaño entero con signo, entonces el rango numérico [-231 231 a -1]. Si el valor excede este rango, volver INT_MAX (231 - 1) o INT_MIN (-231).

Ejemplo 1:

Entrada: "42"
de salida: 42
Ejemplo 2:

De entrada: "-42"
de salida: -42
Explicación: un primer caracter no blanco '-', es un signo negativo.
  Vamos a todos los digitales número negativo consecutivo y más tarde se combina tanto como sea posible, y, finalmente, conseguir -42.
Ejemplo 3:

De entrada: "4193 con las palabras"
de la salida: 4193
Explicación: convertir el apagado digital de '3', debido a que el siguiente carácter no es numérico.
Ejemplo 4:

De entrada: "palabras y 987"
de salida: 0
Explicación: una primera de carácter no en blanco 'w', pero no es un número positivo o número negativo.
Por lo tanto, la conversión no se puede realizar de manera eficaz.
Ejemplo 5:

De entrada: "-91,283,472,332"
Salida: -2147483648
explicación: el número "-91,283,472,332" Por encima del rango de número entero con signo de 32 bits.
  Así que volver INT_MIN (-231).

 

análisis Tema:

No análisis, e ideas para resolver problemas muy claro, sin embargo, es para hacer frente a deben tenerse en cuenta las condiciones de contorno integral, la razón para escribir esta pregunta, porque yo estaba equivocado muchas veces. . .

código Java:

pública  int strToInt (string cadena) {
     largo Resultado = 0 ;
     SI (STR == nula || str.isEmpty ()) {
         retorno ( int ) Resultado; 
    } 

    // espacios quitan 
    STR = str.trim ();
     SI (STR ! .isEmpty () || (str.startsWith ( "+") || str.startsWith ( "-") || por Character.isDigit (str.charAt (0 )))) {
         retorno ( int ) Resultado; 
    } 

    booleana = str.startsWith isNeg ( "-" );
     // encontrar el primer índice que no es un número 
    intstartIndex = isNeg || str.startsWith ( "+")? 1: 0 ;
    int index = startIndex;
    mientras que (índice <str.length () && Character.isDigit (str.charAt (index))) { 
        índice ++ ; 
    } 

    // 截取字符串 
    str = str.substring (startIndex, index);
    int powIndex = 0 ;
    para ( int i = str.length () - 1; i> = 0; i-- ) {
         si (! Character.isDigit (str.charAt (i))) {
             descanso ; 
        } 

        consecuencia+ = Math.pow (10, powIndex ++) * (str.charAt (i) - '0' );
        si (isNeg && (-resultado) <= Integer.MIN_VALUE) {
             volver Integer.MIN_VALUE; 
        } 
        Si (! IsNeg && resultado> = Integer.MAX_VALUE) {
             volver Integer.MAX_VALUE; 
        } 
    } 

    Volver isNeg? ( Int ) (-resultado): ( int ) resultado; 
}

botón de encendido y presente los resultados de tiempos de funcionamiento:

Para ver cómo imprudente. . .

 

 

 

Supongo que te gusta

Origin www.cnblogs.com/sniffs/p/12555486.html
Recomendado
Clasificación