010 --- Schnalle Ausübungskraft eine Zeichenkette in eine Ganzzahl umgewandelt

Betreff Beschreibung:

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

Schreibe eine Funktion StrToInt, Diese Funktion konvertiert die Zeichenfolge auf eine ganze Zahl zu erreichen. Sie können nicht atoi oder andere ähnliche Bibliotheksfunktionen verwenden.

Zunächst wird die Funktion mit einem Leerzeichen beginnen verwarf nutzlos, wenn nötig, bis zum Fund der ersten Nicht-Leerzeichen so weit.

Wenn wir finden, die ersten Nicht-Raumzeichen eine positive oder negative Zahl ist, später die Kombination der Symbole, so viel wie möglich mit fortlaufenden Nummern nach oben, wie das Vorzeichen von integer; wenn das ersten Nicht-Leerzeichen ist Figuren, die direkt nach den kontinuierlichen numerischen Zeichen kombiniert werden, eine ganze Zahl zu bilden.

Neben dem String nach einer gültigen ganzzahligen Teil auch zusätzliche Zeichen bestehen können, können diese Zeichen ignoriert werden, sollten sie eine Funktion nicht beeinträchtigen.

Hinweis: wenn die Zeichenfolge Zeichen in dem ersten Nicht-Leerzeichen ist keine gültige Ganzzahl Zeichenfolge ist leer oder enthält nur Leerraum Zeichenkette, dann werden Sie nicht eine Funktion der Umwandlung sein müssen.

In jedem Fall, wenn die Funktion umwandeln kann nicht effektiv, wird 0 zurückgegeben.

Beschreibung:

Wir gehen davon aus, dass die Umgebung 32-Bit-Ganzzahl mit Vorzeichen Größe speichern kann, dann den numerischen Bereich [-231 231--1]. Wenn der Wert dieses Bereichs überschreitet, Rückkehr INT_MAX (231-1) oder INT_MIN (-231).

Beispiel 1:

Input: "42"
Ausgang: 42
Beispiel 2:

Input: „-42“
Ausgang: -42
Erläuterung: ein erstes nicht-leeres Zeichen ‚-‘ Es ist ein negatives Vorzeichen.
  Wir werden alle digital aufeinander folgende negative Zahl und später so viel wie möglich kombiniert und schließlich -42 erhalten.
Beispiel 3:

Eingabe: „4193 mit den Worten“
Output: 4193
Erläuterung: die digitalen OFF ‚3‘ konvertieren, weil das nächste Zeichen nicht numerisch ist.
Beispiel 4:

Input: „Worte und 987“
Output: 0
Erläuterung: ein erstes nicht-leeren Zeichen ‚W‘, aber es ist nicht eine positive Zahl oder eine negative Zahl.
Daher kann die Umwandlung nicht wirksam durchgeführt werden.
Beispiel 5:

Input: "-91283472332"
Output: -2147483648
Erläuterung: Die Zahl "-91283472332" über den Bereich von 32-Bit - Ganzzahl mit Vorzeichen.
  So zurückkehren INT_MIN (-231).

 

Topic-Analyse:

Nicht-Analyse und Problemlösung Ideen sehr klar, aber ist zu tun mit den Randbedingungen müssen umfassend betrachtet werden, der Grund für diese Frage zu schreiben, weil ich falsch war viele Male. . .

Java-Code:

public  int StrToInt (String STR) {
     Lang Ergebnis = 0 ;
     IF (STR == null || str.isEmpty ()) {
         return ( int ) Ergebnis; 
    } 

    // Leerzeichen entfernen 
    STR = str.trim ();
     IF (STR ! .isEmpty () || (str.startsWith ( "+") || str.startsWith ( "-") || von Character.isDigit (str.charAt (0 )))) {
         return ( int ) Ergebnis; 
    } 

    Boolesche = str.startsWith isNeg ( "-" );
     // den ersten Index auf eine Reihe findet nicht 
    intstart = isNeg || str.startsWith ( "+")? 1: 0 ;
    int index = start;
    während (Index <str.length () && Character.isDigit (str.charAt (Index))) { 
        Index ++ ; 
    } 

    // 截取字符串 
    str = str.substring (start, index);
    int powIndex = 0 ;
    für ( int i = str.length () - 1; i> = 0; i-- ) {
         wenn (! Character.isDigit (str.charAt (i))) {
             Pause ; 
        } 

        Ergebnis+ = Math.pow (10, powIndex ++) * (str.charAt (i) - '0' );
        wenn (isNeg && (-Ergebnis) <= Integer.MIN_VALUE) {
             Rückkehr Integer.MIN_VALUE; 
        } 
        Wenn (! IsNeg && Ergebnis> = Integer.MAX_VALUE) {
             Rückkehr Integer.MAX_VALUE; 
        } 
    } 

    Zurückkehren isNeg? ( Int ) (-Ergebnis): ( int ) Ergebnis; 
}

Power-Taste und legt die Ergebnisse der Laufzeiten:

Um zu sehen, wie unüberlegt. . .

 

 

 

Ich denke du magst

Origin www.cnblogs.com/sniffs/p/12555486.html
Empfohlen
Rangfolge