剑指Offer之字符串转整数

原创 2018年04月17日 10:44:51

atoi库函数:用来字符串对整数的转换。

atoi通过一个全局变量来区分字符串是0和字符串为空的返回值都为0的情况,如果是非法输入,返回0并且把这个全局变量设为一个特殊标记,如果输入时“0”,不会设置全局变量。

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

class Solution {
public:
    int StrToInt(string str) {
        int flag=false;
        long long num=0;
        int symbol=1;
        int i=0;
        if(str[0]=='+')
        { symbol=1;
        i=1;
        }
         else if(str[0]=='-')
         {symbol=-1;
          i=1;
         }
     
        while(i<str.size())
        {
            if(str[i]>'0'&&str[i]<'9')
            {
                num=num*10+str[i]-'0';
                i++;
            }
            else
            {
                return 0;
            }
        }
        if(i==str.size())
        {
            flag=true;
           
            if((symbol>0&&num>0x7FFFFFFF)||(symbol<0&&num>0x80000000))
            {  flag=false;
                return 0;
            }
             num=num*symbol;
        }
        return num;
        
    }
};

这道题目本身不算难,但是要考虑各种边界情况:

字符串为空;

有+ -号

出现非数字的字符

溢出(整形范围)

int类型(整数类型)的范围为-2^31 ~ 2^31-1,即-2147483648~2147483647十六进制表示:0x80000000~0x7FFFFFFF

错误标志

Windows优化大师注册机源码

Windows优化大师注册机源码unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Co...
  • Drate
  • Drate
  • 2003-02-25 13:01:00
  • 2107

【剑指offer-Java版】49把字符串转换为整数

字符串转换为整数 : atoi可能的输入: 1 带符号数 2 无符号数 3 零 4 空指针 5 超出表示范围 – 暂时仅仅是直接退出且设置最小 – 可以考虑此时抛个异常 6 非法输入,比如...
  • Sugar_Z_
  • Sugar_Z_
  • 2016-04-27 09:48:55
  • 1234

剑指offer—字符串转换整数

对于这个问题,其实最先开始我是采用循环的方式进行的,int StrToInt(char *str) { int number=0; while(*str!=0) { ...
  • qq_26768741
  • qq_26768741
  • 2016-05-28 10:40:53
  • 2934

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

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】 题目链接:http://www.nowcoder.com/p...
  • libin1105
  • libin1105
  • 2015-09-13 11:32:53
  • 1088

【剑指offer】字符串转整数

关于这道题目,题目本身还是不错的,真正核心的代码也就那么两行,大部分代码基本都在做非法输入的检查。 最近做这几道题目,对九度后台的测试用例有点无语了,这道题目的测试用例应该有问题,我写的代码自...
  • mmc_maodun
  • mmc_maodun
  • 2014-06-02 08:52:32
  • 5265

《剑指Offer》面试题:将字符串转换为整数

题目 题目:把字符串转化为整数 ,若输入无效,则返回0且将标志位设为true 自己以前在一些书上面看到过关于 字符串转化为整数的例子,心中有点印象,知道要考虑一些特殊情况。今天决定写下这段代码,...
  • u010412719
  • u010412719
  • 2015-08-30 20:02:32
  • 1679

c语言编程实现字符串向整数的转换(剑指offer)

看到这道题的时候,哦,挺简单的,就开始着手去写。然而错了,其实并不是你想的那样。 对于这道题我们要考虑的情况: 字符串前面有空格 前面的‘+’‘-’ 定义的int是否溢出 不合法情况eg:“-123...
  • xs_520
  • xs_520
  • 2016-11-29 20:49:20
  • 475

剑指offer之字符串转换为数字

在剑指offer里第49道题的要求是把字符串转换成整数,在这种情况下肯定是不能用像atoi这样的库函数的哦,所以我们就得模拟实现这个函数来解决面试官所给的问题。很多人可能会一下啊就写出这样的代码: i...
  • qq_29503203
  • qq_29503203
  • 2016-05-22 20:45:26
  • 726

剑指offer-表示数值的字符串

题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”...
  • SoundSlow
  • SoundSlow
  • 2016-08-30 13:04:57
  • 454

《剑指offer》——任意两个整数相加(乘)

#include using namespace std; //正整数相加 char *plus(char *a,char *b) { int len_a = strlen(a); ...
  • zengzhen_CSDN
  • zengzhen_CSDN
  • 2015-12-25 15:47:53
  • 239
收藏助手
不良信息举报
您举报文章:剑指Offer之字符串转整数
举报原因:
原因补充:

(最多只允许输入30个字)