本文主要是介绍3.3 atoi字符串转为整数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1.题目
- 2.代码
1.题目
- 题目
- 思路:这题只需要考虑数字和符号的情况,
1.若字符串开头是空格,则跳过所有空格,到第一个非空格字符,如果没有,则返回0.
2.若第一个非空格字符是符号 +/-,则标记 sign 的真假,这道题还有个局限性,那就是在 c++ 里面,±1 和-+1 都是认可的,都是 -1,而在此题里,则会返回0.
- 若下一个字符不是数字,则返回0,完全不考虑小数点和自然数的情况,不过这样也好,起码省事了不少。
4.如果下一个字符是数字,则转为整形存下来,若接下来再有非数字出现,则返回目前的结果。
5.还需要考虑边界问题,如果超过了整型数的范围,则用边界值替代当前值。
2.代码
class Solution
{
public:int myAtoi(string str){const int str_length=str.length();int i=0;while (str[i] == ' ' && i<str_length)++i;int sign=1;if (str[i++] == '+')sign=1;else if (str[i++] == '-')sign=-1;int num=0;//while(i<str_length && str[i]>='0' && str[i]<='9')for (;i<str_length;++i){if (str[i]<'0' || str[i] >'9')break;if (num >INT_MAX/10 || (num =INT_MAX/10 && str[i] -'0'>INT_MAX %10))return sign == 1?INT_MAX:INT_MIN;num=10*num+str[i]-'0';}return sign*num;}
};
这篇关于3.3 atoi字符串转为整数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!