题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为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;
    }
}