zoukankan      html  css  js  c++  java
  • 把字符串转换成整数

    题目描述:

    将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0。

    输入描述:

    输入一个字符串,包括数字字母符号,可以为空。

    输出描述:

    如果是合法的数值表达式返回数字,否则返回0。

    示例:

    输入
    +2147483647
    1a33
    输出:
    2147483647
    0

    题目分析:

    对于一个字符串来说,正负符号往往是在第一位的,如果第一位是数字的话,则表示符号为正。数字0的ascii码值为48,如果字符串的某一个字符减去48如果是在0到9之间则表示该字符可转换为数字,否则就是不合法的数值,直接返回0。对于字符串前几位都为0的情况下,如果sum为0,表示这个0之前还都是0,因此往后再继续循环即可。由于数据是从高位处理的,因此数据每循环一次都是上回值*10再加上本次处理的数据,本题只需缕清逻辑,很快就可以做出来。代码如下:

    代码:

     1 int StrToInt(string str) {
     2         int sum = 0;
     3     int flag = -1; //是正数或者负数
     4     if (str[0] == '+' || (str[0] - 48 >= 0 && str[0] - 48 <= 9))
     5     {
     6         flag = 1; //正数
     7         if (str[0] - 48 >= 0 && str[0] - 48 <= 9)
     8             sum = str[0] - 48;
     9     }
    10     else if (str[0] == '-')
    11     {
    12         flag = -1;
    13     }
    14     else
    15     {
    16         return 0;
    17     }
    18 
    19     for (size_t i = 1; i < str.size(); i++) {
    20         if (str[i] - 48 < 0 || str[i] - 48 > 9)
    21             return 0;
    22 
    23         if (str[i] == 0 && sum == 0)
    24             continue;
    25 
    26         sum = sum * 10 + (str[i] - 48);
    27     }
    28     sum = sum*flag;
    29     return sum;
    30     }
  • 相关阅读:
    常见的代码报错信息总结(持续更新ing)
    ASCII码对照表
    python ord()与chr()用法以及区别
    Python random模块sample、randint、shuffle、choice随机函数
    日志相关
    tensorflow学习笔记
    tar 解压缩命令详解
    pandas使用
    相似度与距离计算python代码实现
    逻辑回归原理(python代码实现)
  • 原文地址:https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/13425160.html
Copyright © 2011-2022 走看看