题目链接

【题解】

注意越界的处理就好 简单题
还有。。
正的-2^31不能由2^31取相反数得到,因为正的int最多到2^31-1

【代码】

class Solution {
public:
bool isdigit(char key){
return (key>='0') && (key<='9');
} int myAtoi(string str) {
int MAX_INT = (int)((1ll<<31)-1);
int MIN_INT = (int)(-(1ll<<31));
cout<<MAX_INT<<endl;
cout<<MIN_INT<<endl;
int len = str.size();
int idx = -1;
int f = 1;
for (int i = 0;i<len;i++){
if (str[i]!=' '){
if (str[i]=='-'){
f = -1;
idx = i+1;
}else if (str[i]=='+'){
idx = i+1;
}else if (isdigit(str[i])){
idx = i;
}
break;
}
}
if (idx==-1) return 0;
if (!isdigit(str[idx])) return 0;
int i = idx;
int temp = 0;
/*
2147483647
-2147483648
*/
while (i<len && isdigit(str[i])){
int x = str[i]-'0';
if (f==-1){
if (MIN_INT/10!=temp){
if (MIN_INT/10>temp)
return MIN_INT;
}else{
//MIN_INT/10==(-temp)
if (x>8){
return MIN_INT;
}
}
}else{
if (MAX_INT/10!=temp){
if (MAX_INT/10<temp){
return MAX_INT;
}
}else{
if (x>7) return MAX_INT;
}
}
//not exceed limitation
temp = temp*10+f*x;
i++;
}
return temp;
}
};

最新文章

  1. sublime 安装 插件
  2. 使用eclipse+fiddler+微信web开发者工具调试本地微信页面
  3. android——利用SharedPreference做引导界面
  4. 【unity3d游戏开发脚本笔记之一:坐标系选择对物体运动的影响】
  5. 剑指offer:赋值运算符函数和复制构造函数
  6. golang flag包
  7. 十五、EnterpriseFrameWork框架核心类库之系统启动入口与初始化
  8. Linux下redis安装与使用
  9. JavaScript判断IE各版本完美解决方案
  10. redhat在线安装chrome浏览器
  11. NancyFx 2.0的开源框架的使用-Stateless(二)
  12. echarts 柱状图,每根柱子显示不同颜色(随机显示和定制显示)
  13. 用javascript和html5做一个音乐播放器,附带源码
  14. 01——Solr学习之全文检索服务系统的基础认识
  15. HTTP请求报文解剖
  16. Session&amp;&amp;cookie
  17. Android开发工程师文集-相关控件的讲解,五大布局
  18. 单页面登录——编码传参(oa会对#号会进行截断)
  19. mongodb常用查询
  20. brocadcastReceiver

热门文章

  1. InnoDB事务之redo log工作原理
  2. UNP学习 ioctl操作
  3. centos6 sersync2使用
  4. Mistakes Collection I
  5. python模块学习之HTMLTestRunner模块生成HTML测试报告
  6. 32. 持续集成简介及JDK、Tomcat、Jenkins环境搭建
  7. mysql 安装运行学习过程中的报错问题
  8. flask获取参数
  9. springboot多数据库及分布式事务配置
  10. HDU 1261 字串数(排列组合)