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:


  1. Only the space character ' ' is considered as whitespace character.


  1. 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

Popular posts from this blog

Amazing Subarrays(cpp,interviewbit)

Symmetric Tree(leetcode,cpp):

sum of left leaves in a tree(leetcode).