8. String to Integer (atoi) ---Leetcode
2024-08-27 12:00:24
Implement atoi to convert a string to an integer.
题目分析:
题目本身很简单就是将一个字符串转化成一个整数,但是由于字符串的千差万别,导致在实现的时候细节非常多。需要注意的有以下一些:
1.字符串可能由一些空格开始,然后遇到一个正号或者负号,然后是正常的数字
” +123” -> 123 ;” -41” -> -41
2.如果在数字后出现了一些其他字符,直接忽视
” +123^&34” -> 123 ; ” -41 123” -> -41
3.如果最前面的字符是无效数字,或者字符串只有空格或者是空的,都直接返回0
” &*^20” -> 0
4.如果正确的数字超出了int,如果是大于INT_MAX (2147483647),就返回2147483647;如果小于INT_MIN (-2147483648) ,就返回INT_MIN (-2147483648)
“2147483648” -> 2147483647
class Solution {
public:
int myAtoi(string str) {
long long sum=0;
int flag=0;//判断是否是第一个非空格字符
int fuhao=0;//如果等于1,表明是负数
int mine=-2147483648;//最小int
int maxe=2147483647;//最大int
for(int i=0;i<str.size();i++)
{
//如果目前为止还没有出现第一个非空格字符
if(str[i]==32 && flag==0) continue;
if((str[i]==43) || (str[i]==45)) {//43:+ 45:-
if(flag==0)//这里flag==0为真时表示遇到第一个非空格字符
{
flag=1;
if(str[i]==45)fuhao=1;
continue;
}
else return 0;//非第一个非空格字符位,又出现正负号,就是无效数字
}
//如果数字后面又出先了非数字字符,就自动忽略后面的字符,返回已统计的数字
if(str[i]<48 || str[i]>57) {
if(fuhao==1) return -sum;
else return sum;
}
sum=sum*10+str[i]-48;//如果该位字符是正常的数字,就将这个数字加入统计
flag=1;//即使第一个非空格字符不是符号,也要明确已经出现了非空格字符
if(fuhao==0){
if(sum>maxe) return maxe;
}
else{
if(-sum<mine) return mine;
}
}
if(fuhao==1) return -sum;
return sum;
}
};
最新文章
- Xshell5连接虚拟机出现连Could not connect to &#39;192.168.47.128&#39; (port 22): Connection failed,解决办法
- Word2013中制作按钮控件
- PC版淘宝UWP揭秘
- XAMPP里tomcat启动报错:Make sure you have Java JDK or JRE installed and the required ports are free
- 产品原型设计工具 Balsamiq Mockups(转)
- Android 4.2蓝牙介绍
- [转载]Log4net学习笔记
- N - Tram - poj1847(简单最短路)
- TCP连接状态
- Nginx搭建反向代理服务器
- Unity3D项目优化(转)
- BASIC-3	字母图形	循环 字符串
- 如何用cmd通过sublime打开文件?
- 2018-2019-2 网络对抗技术 20165328 Exp2 后门原理与实践
- Registrator中文文档
- [转] 微信小程序页面间通信的5种方式
- 外网访问内网SpringBoot
- hdu 2717 从n点走到k点 (BFS)
- Linksys E 刷Tomato shibby
- day 58 关于bootstrap
热门文章
- 【Mybatis】 入门
- Spark学习笔记3——RDD(下)
- Computer Vision_33_SIFT:A novel coarse-to-fine scheme for automatic image registration based on SIFT and mutual information——2014
- Android笔记(十五) Android中的基本组件——单选框和复选框
- Python面向对象之进阶
- 定制centos6.5自动安装ISO光盘
- [dev][ipsec][esp] ipsec链路中断的感知问题
- zabbix 3.2.2 server web展示如何显示中文 (三)
- C++11新特性之operator ";"; xxx(const char *, size_t n)
- Python基本的语法知识