leetcode刷题8. String to Integer (atoi)

  题目的意思是这样的:仿照c语言的atoi函数,写一个函数,输入一个字符串,返回一个int类型的变量。

  百度百科一下atoi函数:对一个字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。

结合百度百科的atoi函数的功能并结合题目的补充说明,算法分为以下几个步骤:

(1)获取str的第一个非空字符。 如果没有获取到任何非空字符,返回0。

                    否则进入(2)。

(2)获取第一个非空字符, 如果字符为数字0到9,开始计算,并进入(3)。

                 如果字符为'+',进入(3)。

                 如果字符为'-',设置一个标记,表示以后的“计算”都是负数计算,进入(3)。

                 否则返回0。

(3)获取str的下一个字符。如果是这个字符数字'0'到’9’,进行计算,如果不越界,返回(3)。

                                      如果越界,返回Integer的maxvalue或minvalue。

                 否则返回0。

  

代码如下:

public class Solution {
    public int myAtoi(String str) {
        if(str.length()==0)
            return 0;
        char[] strs = str.toCharArray();
        long sum = 0;
        int i = 0;
        boolean flag = false;
        while(strs[i]==' ')
            i++;
        if(strs[i]=='+')
        {
            i++;
        }
        else{
            if(strs[i]=='-')
            {
                i++;
                flag = true;
            }
        }
        for(;i<strs.length;i++)
        {
            if(strs[i]>='0'&&strs[i]<='9')
            {
                if(flag)
                {
                    sum = sum*10-(strs[i]-'0');
                    if(sum<Integer.MIN_VALUE)
                        return Integer.MIN_VALUE;
                }
                else
                {
                    sum = sum*10+(strs[i]-'0');
                    if(sum>Integer.MAX_VALUE)
                        return Integer.MAX_VALUE;
                }
            } 
            else break;
        }
       return (int)(sum);
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值