思路分析
首先判斷字串是否為空,返回0
考慮前面的是否是空格,使用trim()去掉,然後判斷長度是否為0,是的話,返回0
判斷第乙個字元是不是+和-,設定變數sign記錄
迴圈取得字串的數字,考慮字串中有非數字,遇到就退出,保留前面的數字
考慮溢位的情況,溢位返回integer的最大值或最小值
public
class
solution
//去掉空格的情況
str = str.trim();
if(str.length() == 0)
return
0; //正負數標誌
int sign = 1;
intindex = 0;
if(str.charat(index) == '+')
index ++;
else
if(str.charat(index) == '-')
//取得數字部分,遇到溢位和非數字退出
long number = 0;
for(; index
< str.length();index++)
number = number * 10 + (str.charat(index) - '0');
if(number >= integer.max_value)
break;
}if(number * sign <= integer.min_value)
return integer.min_value;
if(number * sign >= integer.max_value)
return integer.max_value;
return (int) number * sign;
}}
整數轉化為字串和字串轉化為整數
整數轉化為字串 includeint main temp i 0 為什麼等於0就可以,因為將temp定義為字串陣列後,等號右邊的數相當於ascii碼值,0就相當於 0 如果寫為61,輸出就為 12345 printf s temp i i 1 while i 0 str j temp i str j...
字串轉化為數值
工作時遇到這樣的乙個情況 伺服器a向b傳送請求並接受結果,耗時300ms,伺服器b從接受請求到傳送完畢,耗時100ms。由於是內網,不可能有200ms的網路延遲。後經檢測,是因為傳輸時用的是字串格式,解析時用了sscanf造成的。由於sscanf要考慮到變參問題,並且接受的種類更加豐富 相對於str...
字串轉化為整數
字串轉化為整數需要注意以下幾個問題 1.檢測非法輸入 2.空串 空指標 3.判斷數字的正負 4.處理數字的上下溢位。因為整數是有範圍的。include long long strtointcore const char digit,bool minus enum status int g nstat...