LeetCode 8. String to Integer(aoti)

//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);

}
//java
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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值