zoukankan      html  css  js  c++  java
  • 49、剑指offer--把字符串转换成整数

    题目描述
    将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 
    输入描述:
    输入一个字符串,包括数字字母符号,可以为空
     
     
    输出描述:
    如果是合法的数值表达则返回该数字,否则返回0
     
    输入例子:
    +2147483647     1a33
     
    输出例子:
    2147483647     0
     
    解题思路:本题需要考虑几个方面
    1、如果非法输入,除了结果输出0,使用全局g_nStatus来标识(进入函数初始化为不合法,最后合法再置为合法)
    2、正负号处理
    3、数值越界
     1 #include <iostream>
     2 using namespace std;
     3 class Solution {
     4 public:
     5     enum status {kValid=0,kInvalid};
     6     int g_nStatus = kValid;
     7     int StrToInt(string str) {
     8         g_nStatus = kInvalid;
     9         long long num = 0;
    10         const char *cstr = str.c_str();
    11         if(cstr != NULL && *cstr != '')
    12         {
    13             int minus = 1;//符号
    14             if(*cstr == '-')
    15             {
    16                 minus = -1;
    17                 cstr++;
    18             }
    19             else if(*cstr == '+')
    20             {
    21                 cstr++;
    22             }
    23             while(*cstr != '')//记得是*cstr
    24             {
    25                 if(*cstr >= '0' && *cstr <= '9')
    26                 {
    27                     num = num*10 + *cstr-'0';
    28                     cstr++;
    29                     //数字越界
    30                     if(((minus > 0) && (num > 0x7FFFFFFF)) || ((minus <0) && (num< (signed int)0x80000000)))//记住加signed int
    31                     {
    32  
    33                         //g_nStatus = kInvalid;
    34                         num = 0;
    35                         break;
    36                     }
    37                 }
    38                 else
    39                 {
    40                     //g_nStatus = kInvalid;
    41                     num = 0;
    42                     break;
    43                 }
    44             }
    45             if(*cstr == '')
    46             {
    47                 g_nStatus = kValid;
    48                 num = num*minus;
    49             }
    50         }
    51         return (int)num;
    52     }
    53  
    54 };
    55 int main()
    56 {
    57     string s = "-123";
    58     Solution a;
    59     int res = a.StrToInt(s);
    60     cout<<res<<endl;
    61     return 0;
    62 }
  • 相关阅读:
    Zabbix 3.0编译安装
    用Python发布自己的代码
    欧拉公式为世界上最完美的公式
    通过别人远端安装anaconda来说配置文件
    jupyter安装与使用
    make在latex中的妙用
    latex源码到PDF文件
    anconda配置国内源
    git命令速查
    一张色环图教你搞定配色(转)
  • 原文地址:https://www.cnblogs.com/qqky/p/7082575.html
Copyright © 2011-2022 走看看