【LeetCode 8】字符串转换整数 (atoi)
2024-10-07 15:43:25
【题解】
注意越界的处理就好 简单题
还有。。
正的-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;
}
};
最新文章
- sublime 安装 插件
- 使用eclipse+fiddler+微信web开发者工具调试本地微信页面
- android——利用SharedPreference做引导界面
- 【unity3d游戏开发脚本笔记之一:坐标系选择对物体运动的影响】
- 剑指offer:赋值运算符函数和复制构造函数
- golang flag包
- 十五、EnterpriseFrameWork框架核心类库之系统启动入口与初始化
- Linux下redis安装与使用
- JavaScript判断IE各版本完美解决方案
- redhat在线安装chrome浏览器
- NancyFx 2.0的开源框架的使用-Stateless(二)
- echarts 柱状图,每根柱子显示不同颜色(随机显示和定制显示)
- 用javascript和html5做一个音乐播放器,附带源码
- 01——Solr学习之全文检索服务系统的基础认识
- HTTP请求报文解剖
- Session&;&;cookie
- Android开发工程师文集-相关控件的讲解,五大布局
- 单页面登录——编码传参(oa会对#号会进行截断)
- mongodb常用查询
- brocadcastReceiver