把字符串转换成整数 (用位操作)

来源:互联网 发布:js清空元素数组 编辑:程序博客网 时间:2024/04/27 21:51

把字符串转换成整数

  • 问题:

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。

方法一(自己写的直白的方法,抛砖引玉)

class Solution {public://char转换成intint CharToInt(char c){    int res;    res = c - '0';    if (res<0 || res>9)        return 0;    return res;}//判断一个char是不是数字 bool is_num(char c){    if (c - '0'>=0 && c - '9'<=0)        return true;    else        return false;}// int StrToInt(string str) {    int len = str.size();    if (len <= 0)        return 0;    string num = "";//存所有数字    bool flag = true;//标志正负    for (int i = 0; i < len; i++){        if (is_num(str[i]))            num += str[i];        else if (str[i] == '-')            flag = false;        else if (str[i] == '+')            flag = true;        else            return 0;//如果不是数字就会返回0,这是测试用例的原因    }    int size = num.size();    int res = 0;    for (int i = size; i; i--){        int large = 1;        for (int j = i - 1; j; j--)            large *= 10;        res += CharToInt(num[size - i])*large; //这个是可以优化的地方    }    if (flag == false)        res *= -1;    return res;}};

方法二(位操作,的简单算法)

class Solution {public:    int StrToInt(string str) {        int res = 0, n = str.size(), s = 1;        if (!n) return 0;        if (str[0] == '-') s = -1;        for (int i = (str[0] == '-' || str[0] == '+') ? 1 : 0; i < n; ++i){            if (!('0' <= str[i] && str[i] <= '9'))                 return 0;            res = (res << 1) + (res << 3) + (str[i] & 0xf);//res=res*10+str[i]-'0';                             }            return res * s;         };
0 0
原创粉丝点击