atoi

原创 2015年07月08日 21:51:03
class Solution {
public:
	int myAtoi(string str) {
		long long n = 0;
		int flag = 0;
		for (int i = 0; i < str.length(); i++){

			char ch = str.at(i);
			if (flag == 0 && ch == ' '){
				continue;
			}
			else if (flag == 0 && ch == '-'){
				flag = 1;
			}
			else if (flag == 0 && ch == '+'){
				flag = 2;
			}
			else if (ch >= 48 && ch <= 57){
				if (i == 0){
					flag = 3;
				}
				int rem = ch - '0';
				if (n > 214748364){
                                       //如果n大于当前值,并且还有下一位,则肯定溢出了
                                       if (flag == 1){
						return numeric_limits<int>::min();
					}
					else {
						return numeric_limits<int>::max();
					}
				}
				if (n == 214748364){
                                      //如果等于214748364则需要分情况讨论,因为int 最大值是2147483647最小值 -2147483648
                                      if (flag == 1 && rem >= 8){
                                              //等于8没有溢出,但是大于8 就溢出了,返回最小值
                                          return numeric_limits<int>::min();
					}
					else if ((flag == 2 || flag == 3) && rem > 7){
                                             //大于7 就溢出了,返回最小值,等于7可以继续操作也不影响
                                            return 2147483647;
					}
				}
				n = 10 * n + rem;
			}
			else{
				break;
			}
		}
		if (flag == 1){
			n = -n;
		}
		return n;
	}
};
挨个遍历数字中位上的数值,访问一个,解析一个,遇到无法解析的返回0

C语言中的atoi函数的实现

C语言中有很多的库函数,其实平时没事的时候多去实现一下里面的库函数还是很有用的,下面就来讲一讲C语言中的atoi函数,这个函数的主要功能是将一个字符串转化为一个数字,可能第一眼看上去,你会觉得这是一个...
  • Loving_Forever_
  • Loving_Forever_
  • 2016年04月30日 11:00
  • 4966

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

atoi()函数的功能:将字符串转换成整型数。atoi()会扫描参数str字符串,跳过前面的空白字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返...
  • sxh850297968
  • sxh850297968
  • 2015年08月14日 11:37
  • 2394

字符串函数---atoi()函数详解及实现(完整版)

atoi()函数 atoi():int atoi(const char *str ); 功能:把字符串转换成整型数。 str:要进行转换的字符串 返回值:每个函数返回 int 值,此值由将输入...
  • lanzhihui_10086
  • lanzhihui_10086
  • 2014年10月11日 16:14
  • 34342

atoi()函数自实现

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

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

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

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

itoa函数和atoi函数的用法   参考网址:http://wenhaidongke.blog.163.com/blog/static/12807009020098213576224/ ...
  • a746742897
  • a746742897
  • 2017年07月30日 13:24
  • 176

c++实现atoi()和itoa()函数(字符串和整数转化)

一:起因 (1)字符串类型转化为整数型(Integer),还是字符串类型(String)转化为Double类型,这在java里面有非常好的内部函数,很easy的事情; (2)但是在c里面没有Integ...
  • u010700335
  • u010700335
  • 2014年11月20日 10:45
  • 6760

atoi函数的实现及注意事项

atoi函数的实现及注意事项 在编写模拟实现atoi函数时,不应该只考虑到只有的数字字符串的简单情况,除此之外,还应该考虑到以下几种状况。 1. 指针为NULL 2. 空字符串 3. +,-号...
  • CC285494320
  • CC285494320
  • 2016年05月03日 18:22
  • 398

atoi和itoa函数及负数转正数时溢出问题

首先贴出c函数库里的atoi函数, 其实是atol函数, 因为atoi调用了atol函数. 函数很简单,相信大家一看就懂. isspace函数是判断传入字符是否为空白符, 空白符指空格, 水平制表,...
  • u012410778
  • u012410778
  • 2014年04月22日 21:30
  • 2127

如何理解atoi、atol、strtol在32位系统64位系统上的区别

如何理解atoi、atol、strtol在32位系统64位系统上的区别
  • atinghaodea
  • atinghaodea
  • 2017年02月11日 12:03
  • 831
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:atoi
举报原因:
原因补充:

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