题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
输入例子:
+2147483647     1a33
输出例子:
2147483647     0
解题思路:本题需要考虑几个方面
1、如果非法输入,除了结果输出0,使用全局g_nStatus来标识(进入函数初始化为不合法,最后合法再置为合法)
2、正负号处理
3、数值越界

 1 #include <iostream>
 2 using namespace std;
 3 class Solution {
 4 public:
 5     enum status {kValid=0,kInvalid};
 6     int g_nStatus = kValid;
 7     int StrToInt(string str) {
 8         g_nStatus = kInvalid;
 9         long long num = 0;
10         const char *cstr = str.c_str();
11         if(cstr != NULL && *cstr != '\0')
12         {
13             int minus = 1;//符号
14             if(*cstr == '-')
15             {
16                 minus = -1;
17                 cstr++;
18             }
19             else if(*cstr == '+')
20             {
21                 cstr++;
22             }
23             while(*cstr != '\0')//记得是*cstr
24             {
25                 if(*cstr >= '0' && *cstr <= '9')
26                 {
27                     num = num*10 + *cstr-'0';
28                     cstr++;
29                     //数字越界
30                     if(((minus > 0) && (num > 0x7FFFFFFF)) || ((minus <0) && (num< (signed int)0x80000000)))//记住加signed int
31                     {
32
33                         //g_nStatus = kInvalid;
34                         num = 0;
35                         break;
36                     }
37                 }
38                 else
39                 {
40                     //g_nStatus = kInvalid;
41                     num = 0;
42                     break;
43                 }
44             }
45             if(*cstr == '\0')
46             {
47                 g_nStatus = kValid;
48                 num = num*minus;
49             }
50         }
51         return (int)num;
52     }
53
54 };
55 int main()
56 {
57     string s = "-123";
58     Solution a;
59     int res = a.StrToInt(s);
60     cout<<res<<endl;
61     return 0;
62 }

转载于:https://www.cnblogs.com/qqky/p/7082575.html

49、剑指offer--把字符串转换成整数相关推荐

  1. 剑指Offer——把字符串转换成整数

    题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合 ...

  2. JAVA把字符串转换成整数

    剑指offer: 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符 ...

  3. 剑指offer——面试题49:把字符串转换成整数

    剑指offer--面试题49:把字符串转换成整数 Solution1: 代码写的啰嗦,但思路清晰..LeetCode上有相似的题目并考虑了溢出,可以参考LeetCode8答案 class Soluti ...

  4. 在要求输入数字处找到非数字字符_剑指 Offer 67. 把字符串转换成整数 leetcode 剑指offer系列...

    点击专辑上方"蓝字"关注我吧 题目难度: 中等 原题链接[1] 今天继续更新剑指 offer 系列, 老样子晚上 6 点 45 分准时更新公众号 每日精选算法题, 大家记得关注哦~ ...

  5. 【Java】 剑指offer(67) 把字符串转换成整数

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能 ...

  6. 【LeetCode】剑指 Offer 67. 把字符串转换成整数

    [LeetCode]剑指 Offer 67. 把字符串转换成整数 文章目录 [LeetCode]剑指 Offer 67. 把字符串转换成整数 package offer;public class So ...

  7. [[EVD]] - 剑指 Offer 67. 把字符串转换成整数

    题目分析:[[EVD]] - 剑指 Offer 67. 把字符串转换成整数https://leetcode-cn.com/problems/ba-zi-fu-chuan-zhuan-huan-chen ...

  8. 判断字符为空_49. 把字符串转换成整数(剑指offer)

    49. 把字符串转换成整数 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0. 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输 ...

  9. 【算法】剑指 Offer 67. 把字符串转换成整数

    1.概述 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当 ...

  10. 剑指Offer(Java版):把字符串转换成整数

    2019独角兽企业重金招聘Python工程师标准>>> 题目:实现一个函数 stringToInt,实现把字符串转换成整数这个功能,不能使用 atoi 或者其他类似的库函数. 题目解 ...

最新文章

  1. 【BZOJ1485】[HNOI2009]有趣的数列(组合数学)
  2. ASP.NET空间使用SQLite遇到的麻烦
  3. QT实现Media Player(媒体播放器)
  4. 翻译SSD论文(Single Shot MultiBox Detector)
  5. 灰度图像的腐蚀与膨胀
  6. 大文件及文件夹上传(续)
  7. 【译】Tim Rose 的kibana插件教程-自定义App插件
  8. 指令脚本redis线上环境监控脚本(python脚本)
  9. php中unset函数是在哪一章_PHP引用(amp;)使用详解
  10. EXE文件结构及读取方法
  11. Sketch 52 破解版 最佳Mac产品原型设计工具
  12. jQuery入口函数的写法
  13. android 自定义view画虚线长方形
  14. 通过无线AP轻松突破内网准入控制
  15. Java快递配送管理系统
  16. 【金猿人物展】深演智能黄晓南:在数字化营销的趋势下,智能和算法将重塑营销价值的评估标准...
  17. stm32启用内部晶振(stm32设置外部晶振)
  18. 一种夸张的炒股计算方法
  19. pat甲级1013图柳神代码解析自学复盘
  20. 基金定投:100%抄到底的方法

热门文章

  1. mysql create database to_MySQL中CREATE DATABASE和CREATE SCHEMA区别(转)
  2. 【计算机网络】ISO/OSI模型
  3. matlab给0数组赋值,MATLAB中怎么把一个函数的一部分赋值给一个变量或数组,比如怎么把sin(x)大于0的部分赋值给f....
  4. canal mysql 数据同步
  5. leetcode刷题 153.寻找旋转排序数组中的最小值
  6. 如何设计一个合适的系统电源
  7. NOR和NAND Flash存储器的区别
  8. 词嵌入 网络嵌入_词嵌入简介
  9. 图像分类数据库_图像分类器-使用僧侣库对房屋房间类型进行分类
  10. mlflow_在生产中设置MLflow