zoukankan      html  css  js  c++  java
  • 8. String to Integer (atoi) ---Leetcode

    Implement atoi to convert a string to an integer.

    题目分析:

    题目本身很简单就是将一个字符串转化成一个整数,但是由于字符串的千差万别,导致在实现的时候细节非常多。需要注意的有以下一些:
    1.字符串可能由一些空格开始,然后遇到一个正号或者负号,然后是正常的数字
    ” +123” -> 123 ;” -41” -> -41
    2.如果在数字后出现了一些其他字符,直接忽视
    ” +123^&34” -> 123 ; ” -41 123” -> -41
    3.如果最前面的字符是无效数字,或者字符串只有空格或者是空的,都直接返回0
    ” &*^20” -> 0
    4.如果正确的数字超出了int,如果是大于INT_MAX (2147483647),就返回2147483647;如果小于INT_MIN (-2147483648) ,就返回INT_MIN (-2147483648)
    “2147483648” -> 2147483647

    class Solution {
    public:
        int myAtoi(string str) {
            long long sum=0;
            int flag=0;//判断是否是第一个非空格字符
            int fuhao=0;//如果等于1,表明是负数
            int mine=-2147483648;//最小int
            int maxe=2147483647;//最大int
    
            for(int i=0;i<str.size();i++)
            {
                //如果目前为止还没有出现第一个非空格字符
                if(str[i]==32 && flag==0) continue;
    
                if((str[i]==43) || (str[i]==45)) {//43:+  45:-
                    if(flag==0)//这里flag==0为真时表示遇到第一个非空格字符
                    {
                        flag=1;
                        if(str[i]==45)fuhao=1;
                        continue;
                    }
                    else return 0;//非第一个非空格字符位,又出现正负号,就是无效数字
                }
    
                //如果数字后面又出先了非数字字符,就自动忽略后面的字符,返回已统计的数字
                if(str[i]<48 || str[i]>57) {
                    if(fuhao==1) return -sum;
                    else return sum;
                }
    
                sum=sum*10+str[i]-48;//如果该位字符是正常的数字,就将这个数字加入统计
                flag=1;//即使第一个非空格字符不是符号,也要明确已经出现了非空格字符
    
                if(fuhao==0){
                    if(sum>maxe) return maxe;
                }
                else{
                    if(-sum<mine) return mine;
                }
    
            }
            if(fuhao==1) return -sum;
            return sum;
    
        }
    };
  • 相关阅读:
    Oracle从入门到精通(笔记)
    MongoDB教程(笔记)
    深入浅出Oracle:DBA入门、进阶与诊断案例(读书笔记2)
    深入浅出Oracle:DBA入门、进阶与诊断案例(读书笔记1)
    获取本周、本季度、本月、上月的开始日期、结束日期
    TortoiseSVN新人使用指南
    Eclipse创建java web工程
    supersock问题
    UDP错误10054:远程主机强迫关闭了一个现有的连接
    【转】javascript深入理解js闭包
  • 原文地址:https://www.cnblogs.com/gremount/p/5768006.html
Copyright © 2011-2022 走看看