首页 > 代码库 > 将字符串转换成数字
将字符串转换成数字
问题描述:
Implement atoi to convert a string to an integer.
解题思路:
对于一个字符串需要注意一下几点:
1、过滤字符串开头的所有空格字符;
2、注意数字字符前面的“+”和“-”字符,从而确定数字的正负号;
3、只处理数字字符,一旦出现非数字字符,立即停止字符串处理,并返回已处理的结果;
4、返回结果时要注意数字越界的问题,不能大于最大值,不能小于最小值。
class Solution { public: int atoi(const char *str) { if (str == NULL) return 0; const char *pCur = str; long long result = 0; int flag = 0;/*表示该数是否为负值*/ while (*pCur == ' ' && *pCur != '\0') pCur++; if (*pCur == '\0') /*字符串中只有空格*/ return 0; if (*pCur == '+')/*处理字符串前面的符号*/ pCur++; else if (*pCur == '-') { flag = 1; pCur++; } if (*pCur > '9' || *pCur < '0')/*加减号后面为非法字符,跳出处理*/ return 0; if (*pCur != '\0') result = _atoi_core(pCur, flag); return (int)result; } long long _atoi_core(const char * pCur, int flag) { long long result; while (*pCur != '\0') { if (*pCur >= '0' && *pCur <= '9') { result = result*10 + *pCur - 48; pCur++; } else /*遇到非法字符,跳出处理*/ break; } if (result > 0x7FFFFFFF) { if (flag) return INT_MIN; else return INT_MAX; } if (flag) result = 0 - result; return result; } };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。