题目:给定一个字符串,要求转成整数,不允许使用atoi或者其它类似库函数。
方案:实现这个函数并不难,但是要考虑以下几个问题
1.考虑字符串为空指针的时候
2.考虑字符串为空串
3.考虑是否有+/-符号
4.考虑是否有不合法的字符
5.考虑结果是否会溢出
const int MAXN = 2147483647; const int MIN = -2147483648; bool isOk; //atoi函数,不合法情况isOk为false,返回0 int StrToInt(char *string){ if(string == NULL){ //空指针 isOk = false; return 0; } isOk = true; int len = strlen(string); //空串 if(len == 0){ isOk = false; return 0; } // long long sum = 0; bool flag = false; //判断+和-符号 if(string[0] == '+' || string[0] == '-'){ flag = true; } //求值 for(int i = 0; i < len; i++){ if(i == 0 && flag){ //如果是+和-符号 continue; } if(string[i] >= '0' && string[i] <= '9'){ sum = sum*10 + string[i]-'0'; } else{ isOk = false; return 0; } if(sum > MAXN || sum < MIN){ //值溢出的情况 isOk = false; return 0; } } //有符号的时候处理 if(flag){ if(len == 1){ isOk = false; return 0; } if(string[0] == '-'){ sum *= -1; } } return (int)sum; //long long转int }
时间: 2024-10-26 21:56:20