版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
输入
+2147483647
1a33
输出
2147483647
0
public class Solution {
public int StrToInt(String str) {
int n=str.length(),s=1;
int res=0;
char[] chars=str.toCharArray();
if(n==0)
return 0;
if(chars[0]=='-')
s=-1;
if(chars[0]=='+')
s=1;
for(int i = (chars[0] == '-' || chars[0] == '+') ? 1 : 0; i < n; ++i){
if(!('0' <= chars[i] && chars[i] <= '9')) return 0;
res = (res << 1) + (res << 3) + (chars[i] & 0xf);//res=res*10+str[i]-'0';
}
if( ((s>0) && (res > 0x7FFFFFFF)) || ((s<0) && (res > 0x80000000)) )//怎样判断溢出??
return 0;
return res * s;
}
}