标签:io 问题 ar amp res har 字符串 return
问题描述:
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; } };
标签:io 问题 ar amp res har 字符串 return
原文地址:http://blog.csdn.net/wan_hust/article/details/38307515