LeetCode題---String to Integer

題目:String to Integer

下面使用java編程,把String類型的字符串轉換成Integer,即將java中的字符串轉換成整數類型,如果字符串中包含數字字符並且以數字字符開始(開頭的空格忽略),則截取字符串中最左邊的一串數字字符轉換爲整數

如:“111aaa”處理之後的結果爲111;

如果被處理的字符串中不包含數字或者沒有以數字開始(開頭的空格忽略),則處理結果一律爲0;

如果處理結果超出了整數範圍,則返回Integer的最大值或者最小值;

思路:1.拿到字符串,首先判斷是否爲null,如果未null則返回0作爲處理結果

    2.去除字符串(開頭和結尾)的空格,判斷字符串長度是否爲0,如果爲零則返回0作爲處理結果

    3.判斷字符串的第一個字符是不是+或者-,設置變量sign記錄。循環取字符串中的數字,根據該字符的ascll碼與字符‘0’的ascll碼的差值,確定其對應的Integer類型的值

    4.如果字符串中有非數字,遇到就退出,保留前邊的數字

    5.考慮取值溢出情況,如果結果溢出了Integer的取值範圍,則返回Integer的最大值或者最小值


代碼:

public int  myAtoi(String str){
//判斷非空
if(str == null){
return 0;
}
//去掉空格
str.trim();
if(str.length() == 0){
return 0;
}
//判斷+或者-
int sign = 1;
int index = 0;//字符str中的腳標
if(str.charAt(index) == '+'){
index++;
}else if(str.charAt(index) == '-'){
index++;
sign = -1;
}
//去的字符串中的數字部分,遇到非數字部分則跳出循環
long number = 0;//記錄最終結果
for(; index < str.length(); index++){
if(str.charAt(index)<'0'||str.charAt(index>'9')){
break;
}
number = number*10+(str.charAt(Index)-'0');
if(number>Integer.MAX_VALUE){
break;//結果溢出integer的範圍時停止
}
}

//判斷溢出情況
if(number*sign > Integer.MAX_VAlUE){
return Integer.MAX_VALUE;
}
if(number*sign < Integer.MIN_VALUE){
return Integer.MIN_VALUE;
}
return (int)number*sign;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章