Leetcode #8 String to Integer (atoi)
题目链接:https://leetcode.com/problems/string-to-integer-atoi/
我用了三个变量记录状态:
sign:记录读取到的符号。true为负值,false为正值或0。初始值为false。
hasSign:记录是否读取到符号。确保正负号只被读取一次。
value:记录最终整数的值,初始值为0。
- 读取到"+","-"或空格符时:
- 如果已经读取到符号,则当前符号看作非法字符,结束处理。
- 如果没有读取到符号,则设定符号或跳过。
- 读取到数字字符时:
- 如果没有读取到符号,设定hasSign = true和sign = false,进行第3步。
- 如果已经读取到符号,进行第3步。
- 更改value的值。(*判断溢出)
- 读取到其他字符时,看作非法字符,结束处理。
关于判断溢出:INT_MAX = 2147483647,INT_MIN = -2147483648。
官方给出的Solution是在value = 214748364时,判断下一个读取到的数字。注意根据符号分别判断。
(其实可以偷懒用long long保存value的值,这样直接比较和INT_MAX / INT_MIN的大小就好了。)