题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
返回值描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
"+2147483647"
返回值
2147483647
示例2
输入
"1a33"
返回值
0
解题思路
前判断前边是否有正负,记录下符号位
之后判断各位是否为数字,然后计算即可
Java代码
public class Solution { public int StrToInt(String str) { if(str.length()==0) return 0; int flag=1; int ans=0; char[] s=str.toCharArray(); int i=0; if(s[0]=='+'|| s[0]=='-'){ i=1; if( s[0]=='-') flag=-1; } for(;i<s.length;i++){ if(s[i]>='0' && s[i]<='9'){ int tmp=(s[i]-'0'); ans=10*ans+tmp; } else{ break; } } if(i==s.length) return flag*ans; return 0; } }