打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
剑指offer 49 把字符串转换成整数

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 
输入描述:
输入一个字符串,包括数字字母符号,可以为空


输出描述:
如果是合法的数值表达则返回该数字,否则返回0

输入例子:
+2147483647    1a33

输出例子:
2147483647    0
class Solution {public:    int StrToInt(string str) {        if(str.empty()){            return 0;        }                int symbol=1;        if(str[0]=='-'){            symbol=-1;            str[0]='0';        }else if(str[0]=='+'){            symbol=1;            str[0]='0';        }                int sum=0;        for(int i=0;i<str.size();i++){            if(str[i]<'0'||str[i]>'9'){                sum=0;                break;            }                        sum=sum*10+str[i]-'0';        }                return symbol*sum;            }};
边界条件:数据上下 溢出空字符串只有正负号有无正负号错误标志输出class Solution {public:    enum Status{kValid = 0,kInvalid};    int g_nStatus = kValid;         int StrToInt(string str) {      g_nStatus = kInvalid;        long long num = 0;        const char* cstr = str.c_str();        if( (cstr != NULL) && (*cstr != '\0') )        {            int minus = 1;            if(*cstr == '-')            {                minus = -1;                cstr++;            }            else if(*cstr == '+')                cstr++;                         while(*cstr != '\0')            {                if(*cstr > '0' && *cstr < '9')                {                    g_nStatus = kValid;                    num = num*10 + (*cstr -'0');                    cstr++;                    if( ((minus>0) && (num > 0x7FFFFFFF)) ||                        ((minus<0) && (num > 0x80000000)) )                    {                        g_nStatus = kInvalid;                        num = 0;                        break;                    }                }                else                {                    g_nStatus = kInvalid;                    num = 0;                    break;                }            }                         if(g_nStatus == kValid)                num = num * minus;                     }        return (int)num;    }};

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
程序员面试100题(算法)之把字符串转换成整数
全方位解析 f-string
CSTR()与STR()区别
【原创】VB中的整除运算和转换函数
关于 c_str()
c语言计算字符串中子串出现的次数函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服