49、剑指offer--把字符串转换成整数

题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git丢弃修改

Git是如何跟踪修改的&#xff1f;我们之前修改文件后都用到了两个命令git add <file>、git commit&#xff0c;其实在Git中&#xff0c;每次修改后&#xff0c;如果不add到暂存区&#xff0c;那就不会加入到commit。 查看一下文件内容&#xff1a; 在其中添加一行记录…

隐藏界面没有必要应用场景

转载于:https://www.cnblogs.com/zengsf/p/8366572.html

mynt product model: D1000-IR-120标定相机和IMU外参之二

1. 在之一中使用kalibr标定mynt相机和内置imu的外参数,使用的是720p,30fps的双目图像和200hz的imu数据,标定结果误差比较大,这一次我们改用480p,60hz的双目图像和200hz的imu数据进行标定,需要在mynt_sdk中的mynteye.launch中进行如下修改. 默认获取图像的2560x720,30fps&#…

AODp

一、AOP是OOP的延续&#xff0c;是&#xff08;Aspect Oriented Programming&#xff09;的缩写&#xff0c;意思是面向切面编程。 AOP&#xff08;Aspect Orient Programming&#xff09;&#xff0c;作为面向对象编程的一种补充&#xff0c;广泛应用于处理一些具有横切性质的…

[洛谷P4174][NOI2006]最大获利

题目大意&#xff1a;同Petya and Graph&#xff0c;数据范围改成$n\leqslant5\times10^3,m\leqslant5\times10^4$ 题解&#xff1a;同上 卡点&#xff1a;无 C Code&#xff1a; #include <algorithm> #include <cstdio> #define maxn 5010 #define maxm 50010 co…

使用ros发布UVC相机和串口IMU数据

&#xff11;&#xff0e;目的&#xff1a;为了可以标定普通USB相机和固定在相机上的外置IMU的外参,我希望通过ROS获取更高分辨率和更高频率的图像数据,并且可以将图像和imu的topic发布出来,直接使用rosbag record录制话题数据,写入bag文件,这样获得的bag文件直接可以用于相机和…

API自动化测试利器——Postman

自从开始做API开发之后&#xff0c;我就在寻找合适的API测试工具。一开始不是很想用Chrome扩展&#xff0c;用的WizTools的工具&#xff0c;后来试过一次Postman之后就停不下来了&#xff0c;还买了付费的Jetpacks。推出Team Sync Beta之后我又把这个工具推广给团队&#xff0c…

gcc,cc,g++,CC的区别

***gcc是C编译器&#xff1b; ***g是C编译器&#xff1b; ***linux下cc一般是一个符号连接&#xff0c;指向gcc ***gcc说明 1.gcc编译常用格式&#xff1a; gcc C源文件 -o 目标文件 或 gcc -o 目标文件 C源文件 或 gcc C源文件 最后一种情况产生的目标文件默认为a.out 2.gcc…

云原生实践之 RSocket 从入门到落地:Servlet vs RSocket

技术实践的作用在于&#xff1a;除了用于构建业务&#xff0c;也是为了验证某项技术或框架是否值得大规模推广。 本期开始&#xff0c;我们推出《RSocket 从入门到落地》系列文章&#xff0c;通过实例和对比来介绍RSocket。主要围绕RSocket如何实现Polyglot RPC、Service Regis…

制作.sens数据集跑通bundlefusion

1. 主要参考这篇博客实现 https://blog.csdn.net/Wuzebiao2016/article/details/94426905 2. 首先就是将自己采集的RGBD图像的保存格式向Bundlefusion需要的格式对齐&#xff0c;如彩色图的命名格式是frame-000000.color.png&#xff0c;深度图的命名规则是frame-000000.depth…

用ul li实现边框重合并附带鼠标经过效果

边框重合这个效果并不难&#xff0c;只是我们没有真正的动手做过而已&#xff0c;下面让我们来谈谈用ul li如何实现边框重合&#xff0c;并附带鼠标经过效果 1 <!DOCTYPE html>2 <html lang"zh-CN">3 4 <head>5 <title></title>6 …

hive 中窗口函数row_number,rank,dense_ran,ntile分析函数的用法

https://www.cnblogs.com/wujin/p/6051768.html转载于:https://www.cnblogs.com/0xcafedaddy/p/8385476.html

python之moviepy库的安装与使用

目的&#xff1a;因为需要保存一个大大的.mp4视频&#xff0c;以防过程中设备出现异常导致整个长长的视频无法正常保存&#xff0c;所以采用分段保存视频的方式&#xff0c;每500帧保存一段&#xff0c;然后再将视频合到一起&#xff0e;最近刚开始学习python,发现python真的很…

oracle 之 安装后pl/sql登录报ora-12154

这个问题一开始困扰了很久。 查的资料是复制一小段代码到tnsnames.ora中 SID名 (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST localhost)(PORT 1522)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME SID名) ) 注意SID名前面不能有任何其他字符&…

如何避免表单重复提交

客户端方案 禁掉提交按钮。 表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题&#xff0c;如果客户端把Javascript给禁止掉&#xff0c;这种方法就无效了。 使用Post/Redirect/Get模式 在提交后执行页面重定向&#xff0c;这就是所…

十六进制转八进制

【问题描述】 问题描述 给定n个十六进制正整数&#xff0c;输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n &#xff08;1<n<10&#xff09;。 接下来n行&#xff0c;每行一个由0~9、大写字母A~F组成的字符串&#xff0c;表示要转换的十六进制正整数&…

使用iai_kinect2标定kinectV2相机

实验背景&#xff1a;因为需要制作bundlefusion需要的数据集&#xff0c;所以需要使用kinectV2相机获取rgbd图像&#xff0c;年前的时候在我的笔记本上安装了libfreenect2库和iai_kinect2&#xff0c;标定过一次kinecv2相机&#xff0c;然后使用kinectv2相机实时获取的图像实现…

tar只解压tar包中某个文件

如果tar包很大&#xff0c;而只想解压出其中某个文件。方法如下&#xff1a; 只想解压出Redis-1.972.tar 中的Changes文件&#xff0c;来查看有哪些更改。 [rootuplooking]# tar -tf Redis-1.972.tar Redis-1.972…

扎克伯格的中文夜:想要成功就不能放弃

10月23日消息。虽然并不太流畅。昨天马克•扎克伯格依旧用中文与清华经管学院主持人完毕了一场对话&#xff1b;在对话中&#xff0c;这位Facebook创始人兼首席运行官阐述了自己学习中文的原因&#xff1a;想要和太太&#xff08;普里西拉•陈&#xff09;的家人交流&#xff1…

python将ros下bag文件的所有topic解析为csv格式

背景&#xff1a;最近在制作kimera的数据集&#xff0c;尤其是运行semantic模块所需要的bag文件中有很多topic&#xff0c;但是很多不知道topic中装的是什么数据&#xff0c;及其格式&#xff0c;所以我就想着怎么可以将bag中的topic都解析数来&#xff0c;这样就能知道bag中都…