LeetCode OJ String to Integer (atoi) 字符串转数字
2024-10-13 14:08:05
#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。
以后有好办法再修改。
最新文章
- [OSI]网络7层模型的理解
- 通过xib加载textfield的时候 发生 this class is not key value coding-compliant for the key textField. 情况怎么解决
- 【转载】MySQL 日志 undo | redo
- 0、IOS8:Xcode6 playground
- attempt to write a readonly database 的解决办法
- enum可以做索引
- Project Euler 92:Square digit chains C++
- python正则表达式与Re库
- python基础day2
- ES优化
- Hadoop的启动和停止说明
- cron笔记
- python定时发信息给女友
- Django之前后端交互使用ajax的方式
- Vmware 安装centos7与网络配置
- 《Linux内核分析》 第一节 计算机是如何工作的
- ASP.NET 2.0
- windows server 2012将计算机图标添加到桌面
- Vue背景图打包之后访问路径错误
- MySql绿色版安装步骤和方法,以及配置文件修改,Mysql服务器启动
热门文章
- MySql的导入与导出
- 【源码下载】分享一个支持自安装自卸载的Windows服务
- Achieving High Availability and Scalability - ARR and NLB
- wdcp升级php版本到5.3,5.5
- MongoDB常用操作一查询find方法db.collection_name.find()
- Session初识
- 介绍几个java把网页报存为图片的框架
- CSS Hack及常用的技巧
- JAVA SERVLET专题(下)
- js 弹出div窗口 可移动 可关闭 (转)