Skip to content

Instantly share code, notes, and snippets.

@priyankark
Created July 19, 2018 18:06
Show Gist options
  • Save priyankark/a85067a3e5ac1842f633c75ba3aea3f7 to your computer and use it in GitHub Desktop.
Save priyankark/a85067a3e5ac1842f633c75ba3aea3f7 to your computer and use it in GitHub Desktop.
class Solution {
public:
int myAtoi(string str) {
int ans=0;
int p=0;
if(str.length()==0)
return 0;
char sign=' ';
for(int i=0;i<str.length();i++)
{
bool bf=false;
while(i<str.length()&&str[i]!='+'&&str[i]!='-'&&!isdigit(str[i])) i++;
if(i+1<str.length()&&str[i]=='+'&&isdigit(str[i+1]))
{
sign='+';
i++;
}
if(i+1<str.length()&&str[i]=='-'&&isdigit(str[i+1]))
{
sign='-';
i++;
}
while(i<str.length()&&isdigit(str[i]))
{
if(ans==INT_MAX/10)
return INT_MAX;
if(ans>INT_MAX/10)
return INT_MIN;
if(ans<INT_MIN/10)
return INT_MAX;
ans=(ans*10)+int(str[i]-'0');
cout<<ans<<endl;
cout<<str[i]-'0'<<endl;
i++;
if(!isdigit(str[i]))
{
bf=true;
break;
}
p++;
}
if(bf) break;
}
if(!isdigit(str[0])&&str[0]!='-'&&str[0]!=' '&&str[0]!='+')
return 0;
if(str.length()>1&&(str[0]=='+'||str[0]=='-')&&!isdigit(str[1]))
return 0;
if(sign=='-')
return -ans;
return ans;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment