//C++
int str2num(const string str)
{
stringstream ss(str);
int num;
ss >> num;
return num;
}
int myAtoi(string str)
{
int num_1 = 0;
int num_a = 0;
int i = 0;
while (num_1<str.size() && (int(str[num_1]) < int('0') || int(str[num_1]) > int('9')))
{
num_1++;
}
while (num_a < str.size() && ((int(str[num_a]) >= int('0') && int(str[num_a]) <= int('9')) || int(str[num_a]) == int('+') || int(str[num_a]) == int('-') || int(str[num_a]) == int(' ')))
{
num_a++;
}
if (num_a < num_1)
return 0;
str += 'a';
for (int i = 0; i < str.size(); i++)
{
if (int(str[i]) < int('0') && int(str[i]) > int('9'))
{
str.erase(i,i+1);
i = 0;
}
}
if (str.size() == 0)
return 0;
return str2num(str);
}
class Solution {
public int myAtoi(String str) {
boolean ZF=true;
int i=0;
while(i<str.length()&&str.charAt(i)==' ')
{
i++;
}
String s="";
String s1=str.substring(i);
System.out.println("s1: "+s1);
if(s1.length()==0)
return 0;
if(s1.charAt(0)=='-')
{
ZF=false;
s1=s1.substring(1);
}
else if(s1.charAt(0)=='+')
{
ZF =true;
s1=s1.substring(1);
}
if(s1.length()==0||((int)s1.charAt(0)<(int)'0'||(int)s1.charAt(0)>(int)'9'))
return 0;
for(i=0;i<s1.length();i++)
{
int a=(int)s1.charAt(i);
if(a>=(int)'0'&&a<=(int)'9')
{
s=s+s1.charAt(i);
}
else
{
break;
}
}
System.out.println("s: "+s);
if(s.length()==0)
return 0;
int j=0;
while(s.charAt(j)=='0')
{
s=s.substring(1);
if(s.length()==0)
return 0;
}
long a;
if(s.length()>11)
{
if(!ZF)
a=(long)(Integer.MIN_VALUE);
else a=(long)(Integer.MAX_VALUE);
}
else {
a=Long.valueOf(s);
if(!ZF)
a=-a;
}
if(a<=Integer.MIN_VALUE)
return Integer.MIN_VALUE;
else if(a>=Integer.MAX_VALUE)
return Integer.MAX_VALUE;
else
return (int)a;
}
}