欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode 8. 字符串转换整数 (atoi) 面向测试编程

程序员文章站 2024-01-22 11:11:04
...

前言

这道题就是考验你耐心,对于每种异常情况的处理,思路上没有大的差别,不像那些递归、动态规划等。
???? ???????? ???? 冲冲冲

题目描述

leetcode 8. 字符串转换整数 (atoi) 面向测试编程
题目链接

思路

首先处理空格,
处理非字母
处理符号位
循环计算
返回

代码

class Solution {
public:
    int myAtoi(string str) {
        int i=0;
        int len = str.size();
        while(str[i]==' ') i++; //空格
        if(i==str.size()||(str[i]>='a'&&str[i]<='z'))
            return 0;
        //符号位
        int sign = 1;
        if(str[i]=='-')
        {
            sign=-1,i++;
        }
        else if(str[i]=='+')
        {
            i++;
        }
        long res=0;
        //求和转换
        while(str[i]>='0'&&str[i]<='9')
        {
            res = (res)*10+(str[i]-'0');
            if(res > INT_MAX)
            {
                cout<<"s";
                if(sign==-1)
                    return INT_MIN;
                else
                    return INT_MAX;
            }
            i++;
        }
        return res*sign;
    }
};

重难点

此题对于不熟悉的朋友对于 x = x10 + i 这个式子不熟悉,这个式子可以用于将数组转化为整数

**将[1,2,3,4]转化为1234。即((1
10+2)10+3)10+4 = 1234