• leecode第八题(字符串转换整数 (atoi))


    bool Flag_err=1;//判断返回0是因为错误还是真的是0
    
    class Solution {
    public:
        int myAtoi(string str) {//写的很丑
            
            if (str=="")
                return 0;
            
            long res=0;
            int flag_sign=1;
            bool flag_blank=true;//检验空格是否检测完
            bool flag_fir=true;//检验第一个值
            
            for (int i=0;i<str.size();i++)
            {
                if(flag_blank && str[i]==' ')
                    continue;
                
                if(flag_fir)//检测第一个值,一旦检测到flag_blank和flag_fir都变假
                {
                    flag_blank=false;
                    flag_fir=false;
                    if (str[i]=='-')
                    {
                        flag_sign=-1;
                        continue;
                    }
                    else if (str[i]=='+')
                        continue;
                    else if (str[i]>='0'&&str[i]<='9')
                    {
                        res=res*10+flag_sign*(str[i]-'0');
                        Flag_err=0;//除非有数字加入才解开flag_err,这也防止出现第一个为加减符号,就认为str是有效输入了
                        continue;
                    } 
                    else
                        return 0;
                }
                
                if(str[i]>='0' && str[i]<='9')
                {
                    Flag_err=0;
                    res=res*10+flag_sign*(str[i]-'0');
                    if(flag_sign==1 && res>0x7FFFFFFF)
                    {
                        res=INT_MAX;
                        break;
                    }
                    if(flag_sign==-1 && res<(signed int)0x80000000)
                    {
                        res=INT_MIN;
                        break;
                    }
                }
                else 
                    break;//一旦发现非数字,就退出
                
            }
            
            if (flag_blank)//全部为空格情况
                return 0;
              
            return int(res);
        }
    };

    总结:

    这题我在剑指offer书上看过,情况稍微有点不一样,但大部分特殊情况我都还记得(还没超过三天)。。

    这题按部就班写没啥,就是编程还是不熟练,且太粗心,还是练得少。

  • 相关阅读:
    amfphp1.9 class mapping初探
    C#程序打包.exe应用程序
    数据库备份方案
    ListView 控件使用
    在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库
    .NET
    转载:MATLAB 符号函数作图
    整理雷达相关
    Python 程序 运行过程
    struts2 文件上传显示进度条
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10574785.html
Copyright © 2020-2023  润新知