將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是乙個合法的數值則返回0
輸入乙個字串,包括數字字母符號,可以為空
如果是合法的數值表達則返回該數字,否則返回0示例1
+21474836471a33
21474836470思路:字串轉化為整數的方法num = num * 10 + str[i] - '0';
特殊情況:1、輸入字串為null;
2、輸入字串只有+/-;
3、轉化的數字大於最大值或小於最小值;
4、輸入的字串有字母。
使用乙個全域性變數進行處理,因為非法情況需要返回0,但是字串只有0時,也只能返回0,需要使用乙個全域性變數來進行辨別。
全部變數賦值技巧,首先賦值為true,進行程式就需要賦值為false,如果沒有進行運算,說明是非法情況1、2,呼叫函式後,
如果是最大最小值退出的情況,全部變數也是false,只有正常處理完字串遇到\0之後,才能修改全域性變數,變為true。
classsolution */}
else
}if(str[i] == '\0'
)
return minus == -1 ? -num : num;
}int strtoint(string
str)
//find + / -
status = true
;
int minus = 1
;
char *p = new
char(str.size() + 1
);
char * tmp =p;
strcpy(p,str.c_str());
//首先判斷是正數還是負數
if(p[0] == '+'
)
if(p[0] == '-'
)
int result = 0;//
首先初始化為0,如果只有乙個+/-那麼不會呼叫函式直接返回0
if(*p != '
\0')
delete tmp;//
刪除首位址開始的那一片記憶體位址。
return
result;
}};
delete刪除的必須是首位址,因為p已經發生了移位操作不是首位址了,所以需要最開始的儲存首位址。
劍指offer面試題 49 把字串轉化為整型
題目 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入描述 輸入乙個字串,包括數字字母符號,可以為空。輸出描述 如果是合法的數值表達則返回該數字,否則返回0。示例1 分析 我們知道大多數情況下越簡單的問題可能越容易出錯,這個題目很多人,包括...
劍指offer 將字串轉化為整數
題目描述 將乙個字串轉換成乙個整數 實現integer.valueof string 的功能,但是string不符合數字要求時返回0 要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0。輸入描述 輸入乙個字串,包括數字字母符號,可以為空 解題思路 先將字串轉化為陣列,要將字...
劍指offer 把字串轉化成整數
將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入乙個字串,包括數字字母符號,可以為空 如果是合法的數值表達則返回該數字,否則返回0。字串從頭開始遍歷,判斷第乙個字元是 或 來確定正負值,後續需要判斷char是否再0到9的ascii碼之間,需...