字符串转换成整数 【微软面试100题 第二十题】
2014-10-29 10:18
169 查看
题目要求:
输入一个表示整数的字符串,把该字符串转换成整数并输出。
例如:输入字符串"235",输出整数235.
参考资料:剑指offer第49题、程序员编程艺术 (by July)
题目分析:
1.基本思路:
View Code
输入一个表示整数的字符串,把该字符串转换成整数并输出。
例如:输入字符串"235",输出整数235.
参考资料:剑指offer第49题、程序员编程艺术 (by July)
题目分析:
1.基本思路:
// 《剑指Offer——名企面试官精讲典型编程题》代码 // 著作权所有者:何海涛 #include <stdio.h> #include <stdlib.h> int StrToIntCore(const char* str, bool minus); enum Status {kValid = 0, kInvalid}; //输入为""和"0",都是return 0;则通过全局变量可以进行区分(""是无效的,"0"有效)。 int g_nStatus = kValid; int StrToInt(const char* str) { g_nStatus = kInvalid; int num = 0; if(str != NULL && *str != '\0') { bool minus = false; if(*str == '+') str ++; else if(*str == '-') { str ++; minus = true; } //加一个判断可以使得"+"和"-"直接return 0,且全局变量表示无效; if(*str != '\0') { num = StrToIntCore(str, minus); } } return num; } int StrToIntCore(const char* digit, bool minus) { //用long long避免num溢出 long long num = 0; while(*digit != '\0') { if(*digit >= '0' && *digit <= '9') { int flag = minus ? -1 : 1; num = num * 10 + flag * (*digit - '0'); if((!minus && num > 0x7FFFFFFF) || (minus && num < (signed int)0x80000000)) { num = 0; break; } digit++; } else { num = 0; break; } } if(*digit == '\0') { g_nStatus = kValid; } return num; } // ====================测试代码==================== void Test(char* string) { int result = StrToInt(string); if(result == 0 && g_nStatus == kInvalid) printf("the input %s is invalid.\n", string); else printf("number for %s is: %d.\n", string, result); } int main(void) { Test(NULL); Test(""); Test("123"); Test("+123"); Test("-123"); Test("1a33"); Test("+0"); Test("-0"); //有效的最大正整数, 0x7FFFFFFF Test("+2147483647"); Test("-2147483647"); Test("+2147483648"); //有效的最小负整数, 0x80000000 Test("-2147483648"); Test("+2147483649"); Test("-2147483649"); Test("+"); Test("-"); return 0; }
View Code
相关文章推荐
- 字符串转换成整数 【微软面试100题 第二十题】
- 【从零单排之微软面试100题系列】20之把字符串转换成整数
- 微软面试100题---字符串转换成整数
- 微软面试100题之20题:输入一个表示整数的字符串,把该字符串转换成整数并输出
- 面试100题:20.把对应数字字符串转换成整数
- 【java 面试100】20.输入一个表示整数的字符串,把该字符串转换成整数并输出
- 字符串转换成整数(微软面试)
- 【微软100题】输入一个表示整数的字符串,把该字符串转换成整数并输出。 例如输入字符串"345",则输出整数345
- 微软等公司数据结构+算法面试100题---字符串
- 微软等数据结构+算法面试100题(24)--对称字符串的最大长度
- C/C++面试之算法系列--atoi(char *str)将字符串转换成整数
- C/C++面试之算法系列--从“整数转换成字符串”看算法的联想
- C/C++面试之算法系列--从“整数转换成字符串”看算法的联想
- 微软等数据结构+算法面试100题(2)--给出一个函数来输出一个字符串的所有排列
- 微软等数据结构+算法面试100题(26)--数值的整数次方
- 微软等数据结构+算法面试100题(6)--写一个函数,检查字符是否是整数,如果是,返回其整数值
- 面试100题系列之15将字符串转换成数
- 微软等数据结构+算法面试100题(11)--压缩字符串
- 程序员面试100题(算法)之把字符串转换成整数
- 微软等数据结构+算法面试100题(29)--在字符串中删除特定的字符