剑指offer——把字符串转换成整数

版权声明:本文为博主原创文章,若需转载,请注明http://blog.csdn.net/qq_30091945 https://blog.csdn.net/qq_30091945/article/details/81702345

概要

题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
复制
+2147483647
1a33
输出
复制
2147483647
0


C++ AC代码

class Solution {
    public:
        bool check(string str){
            bool flag = true;
            for(int i = 0 ; i < str.length() ; i++){
                if(str[i] == ' ' || (str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z')){
                    flag = false;
                    break;
                }
            }
            return flag; 
        }

        int transform(string str){
            int ans = 0;
            int start = 0;
            bool flag = false;
            if(str[0] == '+' || str[0] == '-'){
                start = 1;
                flag = true;
            }
            for(; start < str.length() ; start++){
                ans = ans*10+(str[start]-'0');
            }
            if(flag){
                if(str[0] == '-'){
                    ans = -ans;
                }
            }
            return ans; 
        }

        int StrToInt(string str) {
            if(!this->check(str)){
                return 0;
            }else if( str =="0"){
                return 0;
            }else{
                return this->transform(str);
            }

        }
}; 

猜你喜欢

转载自blog.csdn.net/qq_30091945/article/details/81702345