关闭

atoi实现

标签: atoileetcode
603人阅读 评论(9) 收藏 举报
分类:

atoi()函数会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace()函数来检测),直到遇上数字或正负符号才开始做转换,后续再遇到非数字或字符串结束时(‘\0’)才结束转换,并将前面部分的转换结果返回。

#define INT_MAX 0x7fffffff        //2147483647
#define INT_MIN 0x80000000 //-2147483648
int atoi(const char *str) 
{
    if (str == NULL)
    {
        return 0;
    }
    if (str[i] == '\0')
    {
        return 0;
    }
    int i = 0;
    while (str[i] == ' ')
    {
        i++;
    }
    int flag = 1;
    if (str[i] == '+')
    {
        i++;
    }
    else if (str[i] == '-')
    {
        flag = -1;
        i++;
    }
    long long sum = 0;
    while (str[i] != '\0')
    {
        if (str[i] >= '0' && str[i] <= '9')
        {
            sum = sum * 10 + str[i] - '0';
        }
        else
        {
            return sum;
        }
        if (sum > INT_MAX)
        {
            return flag > 0 ? INT_MAX : INT_MIN;
        }
        i++;
    }
    return sum;
}
2
0
查看评论

atoi的java实现

atoi是字符串转换到整形的函数,用java如何实现呢?看起来简单,陷阱很多,在leetcode网站,这个函数能够写得完全正确的概率只有14%。 atoi的需求是这样的: 如果前面有空格,需要剔除空格; 剔除空格后,第一个字符串如果是+号,认为是正数;如果是...
  • philofly
  • philofly
  • 2014-11-07 10:47
  • 2781

一道经典面试题,atoi函数的实现

参考: (1)atoi函数的实现 (2)《剑指offer》 本体
  • duqi_2009
  • duqi_2009
  • 2014-04-13 11:19
  • 1614

atoi()函数自实现

atoi()函数是把字符串转换成整型数的一个函数。今天就来实现一下它. 先给出测试用例,来模拟一些可能的输入: char *arr1 = NULL; char arr2[1] = {0}; char arr3[] = "12345"; char arr4[] = "...
  • qq_33724710
  • qq_33724710
  • 2016-04-29 17:30
  • 580

库函数atoi()的实现

int atoi(const char *nptr); 如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整形数。否则,返回零。 这里需注意:如果字符串是非法输入:字符串为空,只有一个‘+’或‘-’,非数字等返回的是整形数...
  • Enter_
  • Enter_
  • 2014-08-09 22:58
  • 1224

自己实现atoi系列

atoi系列是字符跟数字之间转换常用的函数,其实自己实现也是挺快的,这里写一种带格式检测的atoi函数。函数说明atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(/0)才结束转换,并将结果返回。返回值返回转换后的整型数。...
  • hairetz
  • hairetz
  • 2009-05-03 01:15
  • 10444

C语言中的atoi函数的实现

C语言中有很多的库函数,其实平时没事的时候多去实现一下里面的库函数还是很有用的,下面就来讲一讲C语言中的atoi函数,这个函数的主要功能是将一个字符串转化为一个数字,可能第一眼看上去,你会觉得这是一个很简单的函数,甚至是一个不需要多少行代码就可以实现的函数。其实这是一个看着很简单,但是实践起来还有些...
  • Loving_Forever_
  • Loving_Forever_
  • 2016-04-30 11:00
  • 5231

C/C++ 实现 atoi 函数

将一段字符串转换为整数数字,最基本的方法就是使用 atoi 函数。如果让我们自己实现一段 atoi 函数,需要注意的细节比较多。原始版本首先想到的就是字符类型之间的差值。可以直接使用字符相减得到差值。 int myAtoi(char* pstr) { int ans = pstr[0] - ...
  • yOung_One
  • yOung_One
  • 2015-11-16 15:00
  • 1582

c++ 实现atoi()函数

1. 问题描述  实现c++函数库中atoi()函数,要考虑到各种特殊情况:    空字符串。 +和-号。 字符串前中后n个空格。 溢出。 非数字字符。 2. 解决方案  转换过程并不复杂,复杂的是要考虑到众多特殊情况。int myAtoi(string str) { if(str...
  • Jeanphorn
  • Jeanphorn
  • 2015-07-15 19:37
  • 3528

itoa函数和atoi函数的实现和用法

itoa函数和atoi函数的用法   参考网址:http://wenhaidongke.blog.163.com/blog/static/12807009020098213576224/ C语言提供了几个标准库函数,可以将任意类型(整型、长整型...
  • a746742897
  • a746742897
  • 2017-07-30 13:24
  • 218

atoi函数的详细实现(考虑溢出)

atoi()函数的功能:将字符串转换成整型数。atoi()会扫描参数str字符串,跳过前面的空白字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数)。 写atoi函数的时候需要注意一下几点 1. 忽略字...
  • sxh850297968
  • sxh850297968
  • 2015-08-14 11:37
  • 2455