伪代码思路:

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

if(str.empty()) return 0;

第二步:

检索有效输入:

int i=0;

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

i++;

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

if(str[i]=='\0')

{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]!='\0')

{

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] != '\0' && str[i] == ' ') 
          ++i; 
           
        if (str[i] == '\0') 
          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] != '\0') 
        { 
            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; 
    }
};

转载于:https://www.cnblogs.com/mmziscoming/p/5751869.html

atoi将字符装换为数字相关推荐

  1. 输入一个字符,判断它是否为小写字母,如果是,将其装换成大写字母,否则,不转换

    输入一个字符,判断它是否为小写字母,如果是,将其装换成大写字母,否则,不转换 大家好,我是萌新,初学者,这是第一次写博文,所以有些紧张,希望大家不要打我~谢谢 ##小写字母转换成大写字母 先说说我的思 ...

  2. java基础unit02-变量,基本数据类型。类型装换,Scanner用法

    回顾: 1.Linux 2.java运行环境 .java,编译.class,JVM加载.class并运行.class WindowsJVM-windows LinuxJVM-----Linux IOS ...

  3. 数据结构---递归实现十进制装换为任意进制

    数据结构-递归实现十进制装换为任意进制 代码: #include <stdio.h> #include <stdlib.h> #include"stack.h&quo ...

  4. mysql c语言数字转字符串函数_C++_c语言标准库中字符转换函数和数字转换函数,字符转换为数字: #includest - phpStudy...

    c语言标准库中字符转换函数和数字转换函数 字符转换为数字: #include atoi();将字符转换为整型   例:char ch1;int i=atoi(ch1); atol();将字符转化为长整 ...

  5. atoi函数_C语言字符串、数字转换函数大全!

    常用到字符串和数字的转换 想找却发现网上的资料太散 所以搜集整理一下,方便给大家以后再用 atof(将字符串转换成浮点型数) atoi(将字符串转换成整型数) atol(将字符串转换成长整型数) st ...

  6. C++字符,字符串,数字,小写,大写的相互转化

    1.字符串转化为浮点型数字 #include<stdlib.h> atof(*a); //atof里面必须是指针 例如:char b[ ]; char *a=&b; double ...

  7. C# 将bcp文件装换为csv文件

    C# 将bcp文件装换为csv文件 ​ 技术选型:C# + VS2015 + DevExpress + Sqlite ​ 源文件:ZIP(xml文件+bcp文件) 前提: ​ XML文件:为集合标签, ...

  8. java单个字符,字符串转数字

    1.单个字符转数字(即ASCLL转换方式) 字符0 ~ 9转数字0 ~ 9 //单个字符转数字,char a ='0';int m = a-'0'; 2.字符串转数字 //字符串转换的三种形式Stri ...

  9. 字符型常量与数字转换

    字符型常量与数字转换 案例一 // atoi class Solution { public:int myAtoi(string str) {int res = 0;int i = 0;int fla ...

最新文章

  1. 如何成为Android开发高手
  2. Priority VS Bandwidth
  3. pageContext.findAttribute()与pageContext.getAttribute()的区别
  4. signature=ecbb5c28a0561484700bbfeebe84cc52,Corps next in line as bond fees are hit by ECB
  5. [PHP源码阅读]trim、rtrim、ltrim函数
  6. CentOS 7 安装 MySQL
  7. Verilog如何避免Latch
  8. Github 本周最有趣的 10 款「机器学习」开源项目 | PaperDaily #32
  9. php微信小程序获取用户信息,微信小程序获取openid及用户信息的方法
  10. 京东探索研究院 34 篇论文入选 CVPR 2022
  11. php表格打印输出,PHP输出表格
  12. android 4实例分析,OpenGL Shader实例分析(4)闪光效果
  13. 函数无法识别_IF函数初级用法之一
  14. Android基础控件EditText
  15. 计算机网页制作保存,不使用任何工具轻松保存网页资源的法子
  16. 华为精益看板探索之路【PPT+注解】
  17. 同比 数据模型 环比_同比环比累计
  18. Eidetic:助你提升记忆力的酷应用
  19. 共享屏幕,录屏的方法
  20. 虚拟示波器-开天斧-STC8H8K64U核心功能实验板测试

热门文章

  1. DevOps实战 —— 如何高效地远程部署?自动化运维利器 Fabric 教程
  2. WebHook入门教程:快速实现自动化运维,如自动热部署、自动重启服务、自动备份数据库等等
  3. Oracle Sql语句定时执行
  4. NPM包管理器跟换国内镜像CNPM
  5. Hystrix面试 - 基于 timeout 机制为服务接口调用超时提供安全保护
  6. Android8.1 MTK平台 截屏功能分析
  7. 镜像资源汇总 -- node依赖包下载缓慢或不成功的解决办法
  8. 【Java】编写Java程序,完成从键盘输入两个运算数据,计算两数之和并输出结果...
  9. HTML网站右键禁用F12代码 屏蔽审查元素 防止修改页面代码
  10. azure考试_我如何通过AZ-900 Microsoft Azure基础考试