又是leetcode的easy级别题,很基本的题目,却漏考虑很多情况,动手前一定要考虑清楚呀!!!
就当做锻炼写作能力吧,先上题目!
将文本转换成整数,注意一下几点:
1.文本里面第一个不为空白的字符应该为数字或‘+’、‘-’,否则返回0;
2.文本中数字后面的文本不影响结果;
3.转换后的值若超过了int的最值应返回最值。
上代码吧!
class Solution {
public:int myAtoi(string str) {int start = 0;for (int i = 0; i!= str.length(); i++){if (str[i] == ' ')start++;elsebreak;}if(start>=str.length())return 0;int p = 0,t=0;if (str[start] == '-'){start++;p = 1;}else if (str[start] == '+')start++;for (; start <str.length(); start++){char m = str[start] - '0';if (m >= 0 && m <= 9){if(t>INT_MAX/10)if(p==0)return INT_MAX;elsereturn INT_MIN;t *= 10;if(p==0&&t>INT_MAX-m)return INT_MAX;else if(p!=0&&-t<(INT_MIN+m))return INT_MIN;t += m;}elsebreak;}return p==0?t:-t;}
};