1.タイトル
タイトル説明
文字列を整数に変換するには、文字列を整数に変換するライブラリ関数を使用できないようにする必要があります。値が有効な値0または文字列でない場合、0を返す
入力説明:
。空にすることができ英数字を含む入力文字列を、
出力の説明:
それは法的な数値表現である場合は、番号を返し、そうでない場合はリターン0
示例1
输入
复制
+2147483647
1a33
输出
复制
2147483647
0
2、分析とコード
1.1つずつ変換+境界処理
(1)考える
この質問全体では、要件に応じて、文字列内の各文字を1つずつ判断して変換します。
タイトルに必要な戻り値はIntであるため、変換された整数が境界値を超えているかどうかをさらに判断する必要があることに注意してください。
(2)コード
public class Solution {
public int StrToInt(String str) {
if (str.length() == 0)
return 0;
char[] strCh = str.toCharArray();
int isNeg = 1, posi = 0, num = 0;
if (strCh[0] == '+')
posi++;
if (strCh[0] == '-') {
isNeg = -1;
posi++;
}
if (str.length() - posi > 10)
return 0;
for (int i = posi; i < str.length(); i++) {
if (strCh[i] < '0' || strCh[i] > '9')
return 0;
int digit = strCh[i] - '0';
if (i - posi == 10) {
if ((isNeg == 1 && ((num - Integer.MAX_VALUE / 10) > 0 || digit > Integer.MAX_VALUE - num * 10)) ||
(isNeg == -1 && ((num - Integer.MIN_VALUE * 10) < 0 || digit > num * 10 - Integer.MIN_VALUE)))
return 0;
}
num = num * 10 + isNeg * digit;
}
return num;
}
}
(3)結果
実行時間:15ミリ秒、9368kのメモリを占有します。
3、その他
何もありません。