zoukankan      html  css  js  c++  java
  • atoi将字符装换为数字

    伪代码思路:

    第一步:检测输入字符串是否为空字符串;

    if(str.empty()) return 0;

    第二步:

    检索有效输入:

    int i=0;

    while(str[i]==' '&&str[i]!='')

    i++;

    循环后i所在的位置即为有效字符所在的位置。

    if(str[i]=='')

    {return 0};

    第三步:检查数字符号:

    if(str[i]=='+')正i++

    if(str[i]=='-')  负i++

    //开始转换;

    int max=ox7fffffff //表示最大的int 32字节符号为为0,表示正数;

    int min=ox800000000;//表示下届 负数;

    long sum =0;

    while( str[i]!='')

    {

    if(str[i]>'0'&&str[i]<'9')

    {

    sum=sum*10+signal*(str[i]-'0');  //字符数字对应相减,其实对应的是它们的码值相减,差值为对应的数值之差;

    }

    esle

     return sum;

    //第五步:时刻检测数字是否溢出:

    if (sum > max || sum < min)   //溢出处理 
                    return sum > 0 ? max : min; 

    ++i;

    }

    return sum;

    class Solution {
    public:
        int myAtoi(string str) {
            if (str.empty())   //空字串 
               return 0; 
             
            //忽略前缀空格 
            int i = 0; 
            while (str[i] != '' && str[i] == ' ') 
              ++i; 
               
            if (str[i] == '') 
              return 0; 
             
            int max = 0x7fffffff; 
            int min = 0x80000000; 
            int signal = 1; 
              
            //处理+、-号 
            if (str[i] == '+') 
            { 
                signal = 1; 
                ++i; 
            } 
            else if (str[i] == '-') 
            { 
                signal = -1; 
                ++i; 
            } 
             
            //转换整数 
            long long sum = 0; 
            while (str[i] != '') 
            { 
                if (str[i] >= '0' && str[i] <= '9') 
                     sum = sum * 10 + signal * (str[i] - '0'); 
                else  
                    return sum; 
                if (sum > max || sum < min)   //溢出处理 
                    return sum > 0 ? max : min; 
                ++i; 
            } 
            return sum; 
        }
    };

  • 相关阅读:
    控制容器的反转和依赖注入模式
    缓存和内存区别
    数据库知识总结:sqlserver中事务总结:begin tran,rollback tran,commit tran +IndexDB总结
    SqlServer数据库1433端口问题1
    网络配置:IP+NETMASK+GATEWAY+DNS
    Shell脚本中非交互式修改密码的方法(转)
    Linux之sed:删除某行以及替换
    每日命令:(3)pwd
    Linux目录结构详细介绍
    关于Linux字符集的查看及修改
  • 原文地址:https://www.cnblogs.com/mmziscoming/p/5751869.html
Copyright © 2011-2022 走看看