實現函式 atoi 。函式的功能為將字串轉化為整數
思路: 1. 需要判斷正負數 2. 需要考慮字串中包含其他非數字字元 3. 需要考慮越界。
在不斷增加位數時判斷整形是否越界的方法:
乙個整形變數儲存到超過其自身的數的時候,不會報錯,但是數字本身會被壓縮,導致無法檢查是不是越界了。
那麼,如何在ans不斷迭代增加自身的過程中,知道是否會越界呢?
第一種方法,用乙個long long 來迭代,然後若超過int_max就返回零。這顯然不是不可以,但無緣無故佔據很多空間。
第二種方法,在還未越界的前一次迴圈檢查。總共兩種情況:
ans>int_max/10,此時還有乙個數字未加,但是無論加什麼都會越界,所以直接返回0;
ans==int_max/10, 此時檢查最後乙個數字,如果大於7,則返回零
對於int_min也是一樣。
注意要先判斷,再加上最後一位。
package datastructure;
public class atoime
public int strtoint(string str)
str = str.trim();
int flag = 1;
int ans = 0;
int index = 10;
char chars = str.tochararray();
for (int i = 0; i < chars.length; i++) else if (i == 0 && '+' == chars[i]) else if (chars[i] >= 48 && chars[i] <= 57) else if(flag == -1)
}ans = ans * index + (chars[i] - 48);
}else
}return ans * flag;
}}
常考資料結構與演算法 反轉字串
寫出乙個程式,接受乙個字串,然後輸出該字串反轉後的字串。字串長度不超過1000 輸入 abcd 返回值 dcba public class reversestrme 使用charat方法 public string solve1 string str stringbuilder stringbuil...
常考資料結構與演算法 找到字串的最長無重複字元子串
給定乙個陣列arr,返回arr的最長無的重複子串的長度 無重複指的是所有數字都不相同 2,3,4,5 4 2,2,3,4,3 3陣列中的每個元素都迴圈一遍。比較每次迴圈的結果。效率極低。public class maxlengthme maxlengthme maxlengthme new maxl...
面試常考資料結構與演算法
資料結構部分 1 陣列和鍊錶的區別。很簡單,但是很常考,記得要回答全面 c 語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前無法確定陣列的大小,只能夠將陣列定義成足夠大小,這樣陣列的空間可能不被使用,從而造...