String to Integer (atoi)
2015-06-13 10:10
260 查看
Implement atoi to convert a string to an integer.
各种意外情况考虑进去是这道题唯一的难点,当然也可以逐步完善,主要需要考虑的是:
1 . 转换数字是否超过int类型范围INT_MAX (2147483647) or INT_MIN (-2147483648) ;我在程序中的判定方法是if(2147483647/10-a<0|| 2147483647-a*10’ <’add ) 在这没关注正负.
2.如果错误输入时的情况,在Leetcode中如果遇见错误输入就返回错误输入前的已得到的结果.
在这道题想了半天~当时还把浮点数输入考虑进去了,结果发现不需要哎.
代码如下:
各种意外情况考虑进去是这道题唯一的难点,当然也可以逐步完善,主要需要考虑的是:
1 . 转换数字是否超过int类型范围INT_MAX (2147483647) or INT_MIN (-2147483648) ;我在程序中的判定方法是if(2147483647/10-a<0|| 2147483647-a*10’ <’add ) 在这没关注正负.
2.如果错误输入时的情况,在Leetcode中如果遇见错误输入就返回错误输入前的已得到的结果.
在这道题想了半天~当时还把浮点数输入考虑进去了,结果发现不需要哎.
代码如下:
int myAtoi(char* str) { int a =0; int add ; int mark =1; char *ptr =str; for(;*ptr==' ';ptr++) ; switch(*ptr) { case '+': mark=1; ptr++; break; case '-': mark=-1; ptr++; } for( ; *ptr!='\0';ptr++ ) { switch(*ptr) { case'+': return(a*mark); case '-': return(a*mark); break; case 'e': return(a*mark); break; case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9': add = (*ptr -'0'); if(2147483647/10-a<0|| 2147483647-a*10 <add ) if(mark >0) return(2147483647 ); else return (-2147483648); a =a*10+add; break; default: return(mark*a); } } return(mark*a); }
相关文章推荐
- 记录下mysql的一些常识
- Leetcode[145]-Binary Tree Postorder Traversal
- rabbitmq_坑
- 认识自己——不要小偷小摸不要委屈自己
- 天声人語 20150613
- ActivityManager: Warning: Activity not started, its current task has been brought to the front 的的问题
- FMDB
- 第二段冲刺进程4
- 解析struts.xml
- 分布式Session框架
- 第二段冲刺进程4
- Centos 5.5下安装samba
- PHYSICALLY-BASED 小镇的demo
- android 通过组件属性动态创建控件并设置布局
- 第二阶段冲刺 站立会议04
- 第二阶段冲刺 站立会议03
- nginx支持缓存302重定向后的文件到本地
- ios-day24-01(SQLite数据库之SQL语句:建表、删表、CRUD、主键约束、排序、条件语句等等)
- PCL库依赖第三方库的功能说明--摘录点云库PCL学习教程
- ! Undefined control sequence. \CJK@XXX ...endcsname {`#2}{`#3}\CJK@ignorespaces \fi l.43 \end{document}