剑指Offer 把字符串转换成整数

    xiaoxiao2025-02-15  14

    题目描述

    将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。

    输入描述:

    输入一个字符串,包括数字字母符号,可以为空

    输出描述:

    如果是合法的数值表达则返回该数字,否则返回0

    解析:转换不难,但难在细节。比如正负号记得判断。str转为int型是否超过范围。用0x80000000表示最大负数时需要加unsigned int.

    class Solution { public: int StrToInt(string str) { if(str.size()==0 || str=="0") return 0; int i = 0; bool flag = true; if(str[0] == '+'){ ++i; if(str.size() == 1) return 0;//只有'+'号 } else if(str[0] == '-'){ ++i; flag = false; if(str.size() == 1) return 0; } long long sum = 0; int num = flag?1:-1; for(;i<str.size();++i){ if(str[i]<'0' || str[i]>'9') return 0; sum = sum*10 + num*(str[i]-'0'); if((flag==true && sum>0x7fffffff) || (flag==false && sum<(signed int)0x80000000))//超出int范围 return 0; } return sum; } };

     

    最新回复(0)