字符串转换成整数-微软面试题
来源:互联网 发布:sql server 字段赋值 编辑:程序博客网 时间:2024/05/21 09:15
思路:每扫描到一个字符,我们把在之前得到的数字乘以10再加上当前字符表示的数字。
特殊处理:
1、 整数可能不仅仅只含有数字,还有可能以’+’或者’-‘开头,表示整数的正负。
2、 非法输入。由于输入的是指针,在使用指针之前,我们要做的第一件是判断这个指针是不是为空。如果试着去访问空指针,将不可避免地导致程序崩溃。另外,输入的字符串中可能含有不是数字的字符。每当碰到这些非法的字符,我们就没有必要再继续转换。
3、 溢出问题。由于输入的数字是以字符串的形式输入,因此有可能输入一个很大的数字转换之后会超过能够表示的最大的整数而溢出。
#include <iostream>#include <cstdlib>using namespace std;int StrToInt(char * str){long long num=0;//设为long long类型,防止溢出 int fu=1;//是否有负号,-1表示有,1表示没有 bool valid=false;if(str==NULL || *str=='\0') return -1;//不合法 ""等价于'\0',但''等价于NUL,对吗? =>后半句不对,''不是null,而是空字符 if(*str=='+'){str++;}else if(*str=='-'){fu=-1;str++;}if(*str=='\0') return -1;//只有"+"或"-",也是不合法的 while(*str!='\0'){if(*str>='0' && *str<='9'){num=num*10+fu*(*str-'0'); if((fu==1 && num>0x7FFFFFFF) || (fu==-1 && num<(signed int)0x80000000)){return -2;//溢出 }str++; }else{return -1;//不合法 }}return num;}void Test(char * str){ int num=StrToInt(str); if(num==-1){cout<<"输入不合法"<<endl; }else if(num==-2){cout<<"溢出"<<endl; }else{cout<<num<<endl;} }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;}
阅读全文
0 0
- 字符串转换成整数-微软面试题
- 微软,Google面试题 (17) —— 字符串转换成整数
- 2、微软面试题:输入一个表示整数的字符串,把该字符串转换成整数并输出
- 18. 微软面试题:输入一个表示整数的字符串,把该字符串转换成整数并输出
- 程序员面试题2-把字符串转换成整数
- 剑指offer--面试题49:把字符串转换成整数
- 剑指Offer:面试题49 把字符串转换成整数
- 面试题49:把字符串转换成整数
- 面试题49:把字符串转换成整数
- 剑指offer 面试题49 把字符串转换成整数
- 面试题49:将字符串转换成整数
- 面试题1----把字符串转换成整数
- 剑指offer--面试题49:把字符串转换成整数
- 剑指offer-面试题49-把字符串转换成整数
- 剑指offer 面试题49 把字符串转换成整数
- 面试题49:把字符串转换成整数
- offer面试题----1(字符串转换成整数)
- 【剑指offer】面试题67:把字符串转换成整数
- 上方固定,下方滚动
- 从值栈获取List集合
- Java基础,创建线程的两种方法
- 数据库备份和恢复以及表数据的导入和导出
- SparkR终极解决方案
- 字符串转换成整数-微软面试题
- Django项目配置让其他用户电脑访问Project
- (4)linux进程通讯之共享内存
- 先序遍历
- 练习24
- 解决 This application requires Java Runtime Environment X
- CentOS6.5final下TFS的安装和使用
- Linux系统的下载和安装
- hadoop序列化和反序列化