converts a string to an integer.(cpp,leetcode)
converts a string to an integer.
==============================================
The function first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, starting from this character, takes an optional initial plus or minus sign followed by as many numerical digits as possible, and interprets them as a numerical value.
Note:
- Only the space character
' '
is considered as whitespace character.
- Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. If the numerical value is out of the range of representable values, INT_MAX (231 − 1) or INT_MIN (−231) is returned.
===============================================
Example 1:
Input: "42"
Output: 42
Example 2:
Input: " -42"
Output: -42
Explanation: The first non-whitespace character is '-', which is the minus sign.
Then take as many numerical digits as possible, which gets 42.
Example 3:
Input: "4193 with words"
Output: 4193
Explanation: Conversion stops at digit '3' as the next character is not a numerical digit.
Example 4:
Input: "words and 987"
Output: 0
Explanation: The first non-whitespace character is 'w', which is not a numerical
digit or a +/- sign. Therefore no valid conversion could be performed.
Example 5:
Input: "-91283472332"
Output: -2147483648
Explanation: The number "-91283472332" is out of the range of a 32-bit signed integer.
Thefore INT_MIN (−231) is returned.
===================================================================================
code:-
class Solution {
public:
int myAtoi(string str)
{
int flage=0;
while(str[0]==' ')
{
str.erase(0,1);
}
//////////////////////////
if(str[0]=='-')
{
flage=1;
str.erase(0,1);
}
else if(str[0]=='+')
{
flage=0;
str.erase(0,1);
}
/////////////////////////
if(isalpha(str[0]))
return 0;
//////////////////////////
long int a=0;
while(isdigit(str[0]))
{
a=a*10+((int)str[0]-48);
str.erase(0,1);
if(flage==1 && a>pow(2,31))
return INT_MIN;
if(flage==0 && a>=pow(2,31))
return INT_MAX;
}
if(flage==1)
return -a;
else return a;
}
};
Comments
Post a Comment