Learning to be Giant.

atoi的实现

|

在Leetcode上面这道题String to Integer (atoi)

自己在考虑的时候有好几个问题没有考虑到:

  1. 溢出的问题
  2. 出现非法字符的处理方法
  3. 出现whitespace的问题

在真正实现的过程当中发现,对溢出的处理值得记录一下。我一开始采用的是判断数字是否突然由整数变为负数了,但是遇到了一个奇葩的测试用例1052254540——1052254540 * 10 == 1932610817。很显然,无论什么输入,如果开头是1052254540,那么无论如何都不可能变成负数了。所以一开始的这种判断方法是有问题的。幸运的是这道题当中我可以获得一个字符串的前缀,所以可以先判断前缀的大小是不是比INT_MAX的除最后一位外的前缀更大,如果是的话则溢出了,如果不是的话,判断是不是等于INT_MAX的除最后一位外的前缀,如果是的话进一步判断最后一位……

Disclaimer: This is a personal weblog. The opinions expressed here represent my own and not those of any entity with which I have been, am now, or will be affiliated.

Comments