簡直off: 把字串轉換成整數
阿新 • • 發佈:2018-12-24
文章目錄
前言
最近有道雲筆記老是沒響應,會員也這樣,所以把演算法的筆記公開到這個csdn,也算是公開的鞭策。
題目常練習起點位置: https://www.nowcoder.com/ta/coding-interviews?asc=false&order=knowledgePoint
題目
解答
public class Solution {
public int StrToInt(String str) {
if (str == null || str. length() == 0) return 0;
char [] chars = str.toCharArray();
boolean hasSign = false;
boolean isNeg = false;
if (chars[0] == '+' || chars[0] == '-') hasSign = true;
if (chars[0] == '-') isNeg = true;
for (char c : chars) {
if (c >= 'a' && c <= 'z') {
return 0;
}
}
int ret = 0;
if (hasSign) {
for (int i = 1; i < chars.length; i++) {
ret = ret * 10 + (chars[i] - '0');
}
if (isNeg){
ret *= -1;
}
}
else {
// no sign
for (int i = 0; i < chars.length; i++) {
ret = ret * 10 + (chars[i] - '0');
}
}
return ret;
}
}
恭喜你通過本題
執行時間:17ms
佔用記憶體:9004k
改進
把
if (c >= 'a' && c <= 'z') {
return 0;
}
塞到下面的迴圈裡,沒有必要兩次遍歷
for (int i = 1; i < chars.length; i++) {
// ADD HERE
if (c /* 也就是chars[i]*/ >= 'a' && c <= 'z') {
return 0;
}
ret = ret * 10 + (chars[i] - '0');
}