Leetcode #8 String to Integer (atoi)

题目链接:https://leetcode.com/problems/string-to-integer-atoi/

 

我用了三个变量记录状态:

sign:记录读取到的符号。true为负值,false为正值或0。初始值为false。

hasSign:记录是否读取到符号。确保正负号只被读取一次。

value:记录最终整数的值,初始值为0。

 

  1. 读取到"+","-"或空格符时:
    1. 如果已经读取到符号,则当前符号看作非法字符,结束处理。
    2. 如果没有读取到符号,则设定符号或跳过。
  2. 读取到数字字符时:
    1. 如果没有读取到符号,设定hasSign = true和sign = false,进行第3步。
    2. 如果已经读取到符号,进行第3步。
    3. 更改value的值(*判断溢出)
  3. 读取到其他字符时,看作非法字符,结束处理。

关于判断溢出:INT_MAX = 2147483647,INT_MIN = -2147483648。

官方给出的Solution是在value = 214748364时,判断下一个读取到的数字。注意根据符号分别判断。

(其实可以偷懒用long long保存value的值,这样直接比较和INT_MAX / INT_MIN的大小就好了。)

posted @ 2015-04-07 15:03  meowcherry  阅读(114)  评论(0编辑  收藏  举报