LeetCode-String To Integer
2015-12-02 10:03
232 查看
拿到这道题不要一分钟就写出了如下代码,
得考虑如下几点:
1. 字串为空或者全是空格的情况,返回0;
2. 字串的前缀如果有空格需要忽略掉;
3. 忽略掉前缀空格后,遇到的第一个字符,如果是‘+’或‘-’号,继续往后读;如果是数字,则开始处理数字;
4. 处理数字的过程中,如果之后的字符非数字,就停止转换,返回当前值;
5. 在上述处理过程中,如果转换出的值超出了int型的范围,就返回int的最大值或最小值。
代码(12ms):
其实我觉得本题要是不限制返回类型为int,那么还要复杂一点,因为还要考虑小数。
int myAtoi(string str) { int num=0; int i=0; for(int i=0;i<str.size();i++) { num=num*10+str[i]-'o'; } return num; }好简单啊,真有这么简单吗,当然不是啦!
得考虑如下几点:
1. 字串为空或者全是空格的情况,返回0;
2. 字串的前缀如果有空格需要忽略掉;
3. 忽略掉前缀空格后,遇到的第一个字符,如果是‘+’或‘-’号,继续往后读;如果是数字,则开始处理数字;
4. 处理数字的过程中,如果之后的字符非数字,就停止转换,返回当前值;
5. 在上述处理过程中,如果转换出的值超出了int型的范围,就返回int的最大值或最小值。
代码(12ms):
int myAtoi(string str) { long long num=0; //整数 int flag=1; int max_int=2147483647; int min_int=-2147483648; int i=0; while(str[i]!='\0'&&str[i]==' ') { i++; } if(str[i]!='\0'&&str[i]=='-') { flag=-1; i++; } else if(str[i]!='\0'&&str[i]=='+') { flag=1; i++; } while(str[i]!='\0') { if(str[i]<='9'&&str[i]>='0') { num=num*10+(str[i]-'0')*flag; if (num > max_int || num < min_int) //溢出处理 return num > 0 ? max_int : min_int; } else { break; } i++; } return num; }
其实我觉得本题要是不限制返回类型为int,那么还要复杂一点,因为还要考虑小数。
相关文章推荐
- SHELL脚本的一些特殊用法
- Makefile
- jQuery-1.9.1源码分析系列(十三) 位置大小操作
- Spring注解@Component、@Repository、@Service、@Controller区别
- java Io流文件夹的拷贝
- GNU Radio message
- js闭包的理解
- avalon指令和js函数简单介绍
- 关于卷积神经网络原理以及代码实现应用的几点思考
- .NET编码解码(HtmlEncode与HtmlEncode)
- MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main re
- JAVA泛型和strictfp关键字说明,泛型还没明白
- 分布式应用中网络故障和分区的docker测试框架Blockade
- 分享方法:android 获得屏幕状态
- Unicode编码完全探究(三)之联通乱码
- 获得图形的实际坐标值
- LVM磁盘管理
- js ==与===区别(两个等号与三个等号)
- Python程序的执行原理
- 访问权限