#include <iostream>
#include <assert.h>
using namespace std;
int ato(const char *str) {
int i=,e=,s=;
int max=,min=-;
int f=;
int tem[]={};
unsigned int pan=;
while(*str==' '){ //过滤掉连续空格
str++;
}
if(*str=='-'||*str=='+'||(*str<=''&&*str>='')){
if(*str=='-'||*str=='+'){ //过滤掉正负号
if(*str=='-')
f=-;
str++;
}
while(*str=='') //过滤掉前面的无用的0
str++;
if( *str<=''&&*str>='' ){ //过滤掉非数字的字符 while( *str!='\0'){ //判断字符串是否结束
if( *str>''||*str<'' ) //字符串还没结束,就出现非数字字符
break;
if( i== ){ //大于10位的数字都要作溢出处理
if(f==-)
return min;
else
return max;
}
tem[i++]=*str-'';
e=e*+(*str-'');
str++;
}
if(i==){ //刚好10位,需要特殊处理
if(f==-){ //负数处理
if(tem[]>){ //超过30,0000,0000
return min;
}
for(i=;i<;i++){
pan=pan*+tem[i];
}
if(pan>=) // 负数的绝对值大于等于2147483648
return min;
}
else{ //正数处理
if(tem[]>){
return max;
}
for(i=;i<;i++){
pan=pan*+tem[i];
}
if(pan>=) // 负数的绝对值大于等于2147483648
return max;
}
}
return f*e;
}
else
return ;
}
return ;
}
int main(){
char str[];
int qq=;
while(cin>>str){
qq=ato(str);
cout<<qq<<endl;
}
return ;
}

这个东西原来挺难考虑周全的,还好leetcode会指出是输入什么数据会输出错误,不然估计找一辈子了。

鉴于这么苛刻的条件,贴出自己的不简洁的代码,这道题第一次AC。

以后有好办法再修改。

最新文章

  1. [OSI]网络7层模型的理解
  2. 通过xib加载textfield的时候 发生 this class is not key value coding-compliant for the key textField. 情况怎么解决
  3. 【转载】MySQL 日志 undo | redo
  4. 0、IOS8:Xcode6 playground
  5. attempt to write a readonly database 的解决办法
  6. enum可以做索引
  7. Project Euler 92:Square digit chains C++
  8. python正则表达式与Re库
  9. python基础day2
  10. ES优化
  11. Hadoop的启动和停止说明
  12. cron笔记
  13. python定时发信息给女友
  14. Django之前后端交互使用ajax的方式
  15. Vmware 安装centos7与网络配置
  16. 《Linux内核分析》 第一节 计算机是如何工作的
  17. ASP.NET 2.0
  18. windows server 2012将计算机图标添加到桌面
  19. Vue背景图打包之后访问路径错误
  20. MySql绿色版安装步骤和方法,以及配置文件修改,Mysql服务器启动

热门文章

  1. MySql的导入与导出
  2. 【源码下载】分享一个支持自安装自卸载的Windows服务
  3. Achieving High Availability and Scalability - ARR and NLB
  4. wdcp升级php版本到5.3,5.5
  5. MongoDB常用操作一查询find方法db.collection_name.find()
  6. Session初识
  7. 介绍几个java把网页报存为图片的框架
  8. CSS Hack及常用的技巧
  9. JAVA SERVLET专题(下)
  10. js 弹出div窗口 可移动 可关闭 (转)