int Myatoi( string str){
int i =0;
int n = str.size();
int flag = 0; //标记正负
int ans = 0;
int ans_end = 0;
for(i; i<n; i++)
{
if(flag == 0)
{
if(str[i] == '+') flag = 1;
else if (str[i] == '-') flag = -1;
else if (str[i] >= '0' && str[i] <= '9')
{
ans = str[i] - '0';
flag = 1;
}
else if( str[i] == 0) continue;
else return 0;
}
else
{
if(str[i] >= '0' && str[i] <= '9')
{
ans_end = ans; //这里用ans_end 标记转换前的数, 目的是为了判断转换后是否值溢出(超过Int最大位或最小位)
ans = ans * 10 + (str[i] - '0');
if( ans /10 != ans_end) // 不相等就证明值已经溢出了
{
if(flag == 1) return INT_MAX:
else return INT_MIN;
}
}
else if( ans!= 0) break;
else return 0;
}
}
return ans * flag;
}
C++ 手写实现字符串转整数atoi函数 (leetcode字符串转整数 atoi)
最新推荐文章于 2023-11-12 23:39:05 发布