23 把字串轉換成整數

2021-09-10 14:44:09 字數 1060 閱讀 2687

題目描述

將乙個字串轉換成乙個整數(實現integer.valueof(string)的功能,但是string不符合數字要求時返回0),要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是乙個合法的數值則返回0。

輸入描述:

輸入乙個字串,包括數字字母符號,可以為空

輸出描述:

如果是合法的數值表達則返回該數字,否則返回0

示例1

複製

+2147483647

1a33

複製

2147483647

0

解題思路:

1)判斷字串是否為空

2)首個字元判斷正負號

3)後續的字元是否為數字,否則退出

4)每個字元轉換

res = (res << 1) + (res << 3) + (str[i] & 0xf);

高位和低位轉換

左移是乘以2的次方。(res << 1) + (res << 3) = res * 2 + res * 8 = res * 10 。 字元'0'到'9'的ascii值的低4個二進位制位剛好就是0到9所以str[i]&0xf等於str[i]-'0'

參考:

class solution  

return res * s;

}};

考慮溢位的情況:

class solution

// 溢位判斷

if((s== 1 && res>int_max) || (s== -1 && res*s 出現溢位時,return 0;每個資料型別的最大長度呼叫系統內部的系統函式,c++內部的:

int_max

2147483647

maximum (signed) int value

int_min

–2147483647–1

minimum (signed) int value

參考:

把字串轉換成整數

題目 輸入乙個表示整數的字串,把該字串轉換成整數並輸出。例如輸入字串 345 則輸出整數345 分析 這道題儘管不是很難,學過c c 語言一般都能實現基本功能,但不同程式設計師就這道題寫出的 有很大區別,可以說這道題能夠很好地反應出程式設計師的思維和程式設計習慣,因此已經被包括微軟在內的多家公司用作...

把字串轉換成整數

題目 輸入乙個表示整數的字串,把該字串轉換成整數並輸出。例如輸入字串 345 則輸出整數 345。分析 這道題儘管不是很難,學過c c 語言一般都能實現基本功能,但不同程式設計師就這道題寫出的 有很大區別,可以說這道題能夠很好地反應出程式設計師的思維和程式設計習慣,因此已經被包括微軟在內的多家公司用...

把字串轉換成整數

題目 輸入乙個表示整數的字串,把該字串轉換成整數並輸出。例如輸入字串 345 則輸出整數 345。分析 這道題儘管不是很難,學過 c c 語言一般都能實現基本功能,但不同程式設計師就這道題寫出的 有很大區別,可以說這道題能夠很好地反應出程式設計師的思維和程式設計習慣,因此已經被包括微軟在內的多家公司...