力扣8 字符串转整数
这个代码能过1078/1084个测试用例
首先去除空格
然后将正负号存下来
第三步就是取出每一位数字(核心逻辑):
for(;index<length;index++)
{
int digit=s.charAt(index)-'0';
if(digit<0||digit>9)//这一位不是数字
{
break;
}
result=result*10+digit;
}
class Solution {
public int myAtoi(String s) {
if(s.length()==0) return 0;
int index=0;//记录遍历到字符串的位置
long result=0;
int sign=1;//1表示正数,-1表示负数
int length=s.length();
int num=0;
while(index<length&&s.charAt(index)==' ')//去掉前面的空格
{
index++;
}
if(index>=length) return 0;
while(index<length&&(s.charAt(index)=='+'||s.charAt(index)=='-'))
{
if(s.charAt(index)=='+')
{
sign=1;
index++;
num++;
}
else if(s.charAt(index)=='-')
{
sign=-1;
index++;
num++;
}
}
if(num>1) return 0;
if(index>=length) return 0;
for(;index<length;index++)
{
int digit=s.charAt(index)-'0';
if(digit<0||digit>9)//这一位不是数字
{
break;
}
result=result*10+digit;
}
if(sign*result>Integer.MAX_VALUE)
{
return Integer.MAX_VALUE;
}
if(sign*result<Integer.MIN_VALUE)
{
return Integer.MIN_VALUE;
}
return (int)(sign*result);
}
}