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; 
        }
    };

  • 相关阅读:
    tomcat拒绝接收请求记录
    js阻止事件冒泡
    BZOJ 5381 or & Codeforces 623E Transforming Sequence DP+NTT
    BZOJ5384 有趣的字符串题 回文树
    Codeforces 932G Palindrome Partition 回文树+DP
    LOJ2542 随机游走 Min-Max容斥+树上期望DP
    LOJ6070 基因 分块+回文自动机
    BZOJ3682 Phorni 后缀平衡树
    Codeforces 994F Compute Power 二分+DP
    BZOJ2759一个动态树好题 LCT
  • 原文地址:https://www.cnblogs.com/mmziscoming/p/5751869.html
Copyright © 2011-2022 走看看