leetcode 8: 字符串转整数(atoi)

实现 atoi,将字符串转为整数。

该函数首先根据需要丢弃任意多的空格字符,直到找到第一个非空格字符为止。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。

字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。

当字符串中的第一个非空字符序列不是个有效的整数;或字符串为空;或字符串仅包含空白字符时,则不进行转换。

若函数不能执行有效的转换,返回 0。

说明:

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231,  231 − 1]。如果数值超过可表示的范围,则返回  INT_MAX (231 − 1) 或 INT_MIN (−231) 。

示例 1:

输入: "42"
输出: 42

示例 2:

输入: "   -42"
输出: -42
解释: 第一个非空白字符为 '-', 它是一个负号。我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。

示例 3:

输入: "4193 with words"
输出: 4193
解释: 转换截止于数字 '3' ,因为它的下一个字符不为数字。

示例 4:

输入: "words and 987"
输出: 0
解释: 第一个非空字符是 'w', 但它不是数字或正、负号。因此无法执行有效的转换。

示例 5:

输入: "-91283472332"
输出: -2147483648
解释: 数字 "-91283472332" 超过 32 位有符号整数范围。 因此返回 INT_MIN
解答:
 1 int myAtoi(string str) {
 2         int res = 0;
 3         int flag = 1;
 4         int i = 0;
 5         while(str[i] == ' ' && i < str.size())
 6             ++i;
 7         if(i < str.size())
 8         {
 9             if(str[i] == '-')
10             {
11                 flag = -1;
12                 i++;
13             }
14             else if(str[i] == '+')   
15                 i++;
16             else if(str[i] < '0' || str[i] > '9')
17                 return 0;
18             for(; i < str.size(); ++i)
19             {
20                 if(str[i] < '0' || str[i] > '9')
21                     break;
22                 if(res > INT_MAX / 10 || (res == INT_MAX/10 && str[i] - '0' > INT_MAX %10))
23                     return flag > 0 ? INT_MAX : INT_MIN;
24                 res = res * 10 + str[i] - '0';
25             }
26             
27         }
28         return res * flag;
29     }

 

转载于:https://www.cnblogs.com/bzaq/p/9950360.html

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

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

相关文章

优秀产品页设计:将访问者转化成客户

摘要&#xff1a;本文是对外文《 Better Product Pages: Turn Visitors Into Customers 》的翻译&#xff0c;编译内容如下&#xff1a; 展示产品、服务的方法是其获得成功的关键。在Web上&#xff0c;你留给用户的第一印象是至关重要的。 如果有人访问你的网站&#xff0c;一定…

计算机网络学习方法

原文见&#xff1a;http://blog.csdn.net/qq_33506160/article/details/51872708 一、网络课程究竟难在哪&#xff1f; 1&#xff0e;内容比较乱 如果把《计算机网络技术基础》看做是一本计算机网络导论方面的教材&#xff0c;就不会认为乱了&#xff0c;因为导论就是为了解决知…

小程序类似抖音视频整屏切换

更新 现在已经更新了github地址和效果gif&#xff0c;可在文章最后查看。如果我的代码对你有用&#xff0c;请帮我随手star一下。 需求 最近在项目中需要加一个功能&#xff0c;在小程序中将已有的短视频功能&#xff0c;按照抖音的方式来浏览&#xff0c;整屏&#xff0c;可上…

Coding For Fun 32小时:充满创造、激情、团结的编程马拉松

摘要&#xff1a;Coding for Fun大赛是2012中国软件开发者大会&#xff08;SDCC&#xff09;的重要环节。由六名黑马学员组成的“天翼二队”&#xff0c;经过32小时的“血拼”&#xff0c;凭大赛作品“语音控”&#xff0c;获得了本次大赛的“最佳设计奖”。本文是该队队员的参…

centos6.8安装oracle12C 详细步骤讲解

2019独角兽企业重金招聘Python工程师标准>>> centos6.8安装oracle12C 详细步骤讲解 安装前环境配置 1 root身份安装依赖包 [rootdlp ~]# yum -y install binutils compat-libcap1 compat-libstdc-33 compat-libstdc-33.i686 gcc gcc-c glibc glibc.i686 glibc-deve…

解决 springboot 项目:找不到或无法加载主类

Spring Boot下无法加载主类 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我什么也没有改&#xff0c;启动服务报错如题&#xff1a;找不到或无法加载主类 解决&#xff1a;什么也不…

管理好你的愿望,人生将另一个样

别让欲望控制了你欲望是人的本性。人生在世&#xff0c;谁都会有欲望。物欲、食欲、情欲、发财欲、求知欲……欲望是消防队也无法扑灭的火。作为人&#xff0c;我们不能消除欲望&#xff0c;也不能让欲望漫无边际地增长&#xff0c;所以&#xff0c;我们应该把握好欲望的尺度&a…

25 模块和包

今日内容 import from xxx import xxxx 金庸 1. 导入模块的执行的步骤 2. 自定义模块 3. 自定义包(难点) 一个表达式 -> 一条语句 -> 语句块 -> 函数 -> 类 -> 模块 -> 包 -> 项目 包就是我们的文件夹, 包内可以写很…

【许晓笛】 EOS 智能合约案例解析(2)

详解 EOS 智能合约的 cpp 文件 之前的文章介绍了 eosio.token 智能合约的 hpp 文件&#xff0c;这次向大家介绍 eosio.token.cpp 文件&#xff0c;cpp 文件即 C 代码文件&#xff0c;智能合约所有的业务逻辑内容都是在 cpp 文件中实现的。 eosio.token.cpp 文件地址&#xff1a…

java 中 transient关键字

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 java语言的关键字&#xff0c;变量修饰符&#xff0c;如果用transient声明一个实例变量&#xff0c;当对象存储时&#xff0c;它的值不需…

java中int转成String位数不足前面补零

java中int转成String位数不足前面补零 转载自&#xff1a;http://ych0108.iteye.com/blog/2174134java中int转String位数不够前面补零 String.format("%010d", 25); //25为int型 10代表前面要补的字符 10代表字符串长度 d表示参数为整数类型 今天想将int 转String 位…

Oops! the requested resource is not found!

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 情况一&#xff1a;调用 dubbo 服务失败&#xff0c;报错如题&#xff1a;Oops! the requested resource is not found! 原因很简单&am…

django URL路由基础

URL是Web服务的入口&#xff0c;用户通过浏览器发送过来的任何请求&#xff0c;都是发送到一个指定的URL地址&#xff0c;然后被响应。 在Django项目中编写路由&#xff0c;就是向外暴露我们接收哪些URL的请求&#xff0c;除此之外的任何URL都不被处理&#xff0c;也没有返回。…

Linux在超级计算机领域一统天下

摘要&#xff1a;在世界超级计算机排行榜500强榜单中&#xff0c;基于Linux的超级计算机占据了462个席位&#xff0c;比率高达92%。基于Windows的超级计算机仅有2个席位&#xff0c;份额为0.4%。中国基于Windows的超级计算机Magic Cube排名94位&#xff0c;澳大利亚基于Windows…

Qtum量子链漏洞赏金计划正式开启

本次Qtum量子链赏金计划为了更好的借助社区的力量参与到QTUM主网及周边应用的开发建设中&#xff0c;让QTUM持续地保持安全、高效的运行&#xff0c;同时能满足更多用户的需求。Bug分级与奖励体系1、如果已经有类似的Issue或者Qtum团队已经知道并在解决该问题的情况将不适用于该…

.SpelEvaluationException: EL1008E: Property or field ‘cache_department_list_Tree‘ cannot be found

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错如题&#xff1a; .SpelEvaluationException: EL1008E: Property or field cache_department_list_Tree cannot be found on object…

修过的一个android framework原生系统代码bug

“坑”描述&#xff1a; 在对我们自己研发的一款android终端进行camera拍照压力测试时&#xff0c;发现当拍照张数达到几万张时&#xff0c;查看内存占用情况&#xff0c;发现内存泄露。 填“坑”&#xff1a; frameworks/base/core/jni/android/graphics/YuvToJpegEncoder.…

Koa项目搭建过程详细记录

2019独角兽企业重金招聘Python工程师标准>>> Java中的Spring MVC加MyBatis基本上已成为Java Web的标配。Node JS上对应的有Koa、Express、Mongoose、Sequelize等。Koa一定程度上可以说是Express的升级版。许多Node JS项目已开始使用非关系型数据库(MongoDB)。Sequel…

商业项目中代码质量是否重要?

这是一篇比较老的 文章&#xff0c;但是文中的这些问题在现在仍然普遍存在。代码质量的高低与商业产品的优劣是否有直接的影响&#xff1f;开发者Frank Sommers在文中给出了他的看法。文章内容如下。在大多数商业项目中&#xff0c;代码质量并不被看重&#xff0c;因为大部分情…

Class is not a root resource. It, or one of its interfaces must be annotated with @Path:

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错如题&#xff1a; Class is not a root resource. It, or one of its interfaces must be annotated with Path:XXXX 这是一个dub…