String To Num
题目描述:
给定一个字符串,将其转化为对应的合法的数字。其中字符串可能的输入存在多种情况,需要考虑。如果是非法的转化,返回0;如果是大于2147483647则返回INT_MAX(2147483647);如果是小于-2147483648则返回INT_MIN(-2147483648).
解题思路:
题目的整体思路不难,主要利用’9’-‘0’来得到对应位数代表的数字,用上一位的累加和乘以10加上当前位数得到结果。需要考虑的部分有:输入的开头可能是空格,我们需要跳过这些字符;当到达第一位非空格的时候,记录下数字的符号;最后需要考虑的是超过整形数字的范围;我们的做法是用base=INT_MAX/10来作为标记;如果在还没到达最后一位的时候,当前已经大于base,则结果一定溢出,所以返回对应符号的数即可,如果是当前值等于base的情况下,判断当前为是否大于7,如果大于7也是同样的做法。当然好几种情况在返回0的情况可以全部合并,写入注释用于提醒。所以做题之前需要多考虑Corner case。
代码如下:
|
|