leetcode 8. 字符串转换整数 (atoi) 面向测试编程
程序员文章站
2024-01-22 11:11:04
...
前言
这道题就是考验你耐心,对于每种异常情况的处理,思路上没有大的差别,不像那些递归、动态规划等。
???? ???????? ???? 冲冲冲
题目描述
思路
首先处理空格,
处理非字母
处理符号位
循环计算
返回
代码
class Solution {
public:
int myAtoi(string str) {
int i=0;
int len = str.size();
while(str[i]==' ') i++; //空格
if(i==str.size()||(str[i]>='a'&&str[i]<='z'))
return 0;
//符号位
int sign = 1;
if(str[i]=='-')
{
sign=-1,i++;
}
else if(str[i]=='+')
{
i++;
}
long res=0;
//求和转换
while(str[i]>='0'&&str[i]<='9')
{
res = (res)*10+(str[i]-'0');
if(res > INT_MAX)
{
cout<<"s";
if(sign==-1)
return INT_MIN;
else
return INT_MAX;
}
i++;
}
return res*sign;
}
};
重难点
此题对于不熟悉的朋友对于 x = x10 + i 这个式子不熟悉,这个式子可以用于将数组转化为整数
例
**将[1,2,3,4]转化为1234。即((110+2)10+3)10+4 = 1234