LeetCode【7--整数反转】 LeetCode【8--字符串转整数】

整数反转

题目描述

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
在这里插入图片描述

解题思路

x%10 取一位,x/10下一位,注意越界,

代码实现

class Solution {
public:int reverse(int x) {int sum = 0;while(x){if(sum<INT_MIN/10) return 0;if(sum>INT_MAX/10)return 0;sum=sum*10+x%10;x/=10;}return sum;}
};

字符串转整数

题目描述

请你来实现一个 atoi 函数,使其能将字符串转换成整数。

首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。

当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。

该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。

注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。

在任何情况下,若函数不能进行有效的转换时,请返回 0。

说明:

假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,请返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。

解题思路

第一步

去除字符串中的所有空格,只记录有效字符的下标
如果都是空格,就直接返回0

int length = s.size();
int index = 0;
while(index < length)
{if(s[length] != ' ')break;index++;
}
if(index == length)return 0;

第二步

判断正负,用个标记为来表示,起初为正

int signal = 1;
if(s[index] = '+')index++;
else if(s[index] = '-')
{	singal = -1;index++;
}

第三步

转换,首先判断是否越界,再进行转换,

int res = 0; //保存结果
while(index<legnth)
{//1.取一个字符char Cur = s[index];//2.判断是否为数字字符if(Cur < '0' || Cur >'9')break;//3.判断是否越界if (res > INT_MAX / 10 || (res == INT_MAX / 10 && (curChar - '0') > INT_MAX % 10)) {return INT_MAX;}if (res < INT_MIN / 10 || (res == INT_MIN / 10 && (curChar - '0') > -(INT_MIN % 10))) {return INT_MIN;}//4.转换res = res*10 + signal*(Cur - '0');//5.取下一个字符index++;
}

代码实现

class Solution {
public:int myAtoi(string str) {unsigned long len = str.length();int index = 0;while (index < len) {if (str[index] != ' ') {break;}index++;}//如果全部是空格,直接返回0if (index == len) {return 0;}int sign = 1;if (str[index] == '+') {index++;} else if (str[index] == '-') {sign = -1;index++;}int res = 0;while (index < len) {char curChar = str[index];if (curChar < '0' || curChar > '9') {break;}if (res > INT_MAX / 10 || (res == INT_MAX / 10 && (curChar - '0') > INT_MAX % 10)) {return INT_MAX;}if (res < INT_MIN / 10 || (res == INT_MIN / 10 && (curChar - '0') > -(INT_MIN % 10))) {return INT_MIN;}res = res * 10 + sign * (curChar - '0');index++;}return res;}
};

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

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

相关文章

word2003如何设置护眼模式_ERP系统上线,如何设置采购收货的模式,提升企业的采购效率...

如何合理的规划采购计划上次去拜访一个朋友&#xff0c;他们说公司既然出现没有下达采购订单&#xff0c;供应商也有送货过来的事情&#xff0c;对于公司来说&#xff0c;这个是非常严重的问题。若用了ERP系统之后&#xff0c;如何避免类似的事情发生&#xff0c;今天我们来分享…

LeetCode【9-- 回文数】LeetCode【10 --正则表达式的匹配】

回文数 题目描述 判断一个整数是否是回文数。回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 解题思路 判断该数的逆序数是不是和原数相同 代码实现 class Solution { public:bool isPalindrome(int x) {if(…

LeetCode【11--盛水最多的容器】LeetCode【12 -- 整数转罗马数字】

盛水最多的容器 题目描述 给定 n 个非负整数 a1&#xff0c;a2&#xff0c;…&#xff0c;an&#xff0c;每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线&#xff0c;垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线&#xff0c;使得它们与 x 轴共…

LeetCode【13--罗马数字转整数】LeetCode【14--最长的公共前缀】

罗马数字转整数 题目描述 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即为两个并列的 1。12 写做 XII &#xff0c;即为 X II 。 27 写做 XXVII, 即为 XX…

文件压缩(基于LZ77的压缩)

LZ77压缩原理 初始LZ77 LZ77是基于字节的通用压缩算法&#xff0c;它的原理就是将源文件中的重复字节(即在前文中出现的重复字节)使用(offset&#xff0c;length&#xff0c;nextchar)的三元组进行替换 这里的 长度–offset&#xff0c;距离—length&#xff0c;先行缓冲匹配…

好中的图像处理方面的期刊_约会中,注意这四个方面,帮助你把握好自己的真爱...

两个人想要拥有一段美好的感情&#xff0c;那么男生就要掌握好一些技巧去追求对方&#xff0c;在追求的过程中&#xff0c;两个人的约会也非常重要&#xff0c;毕竟只有约会过程中&#xff0c;女孩子才能够看到你光鲜亮丽的一面&#xff0c;才能够慢慢的接受你&#xff0c;如果…

kafka consumer配置拉取速度慢_Kafka消费者的使用和原理

这周我们学习下消费者&#xff0c;仍然还是先从一个消费者的Hello World学起&#xff1a;public class Consumer { public static void main(String[] args) { // 1. 配置参数 Properties properties new Properties(); properties.put("key.des…

子矩阵的和

题目描述 输入一个n行m列的整数矩阵&#xff0c;再输入q个询问&#xff0c;每个询问包含四个整数x1, y1, x2, y2&#xff0c;表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数n&#xff0c;m&#xff0c;q。 …

jmeter 循环取值赋值给form_JMeter系列(三)逻辑控制器详解

循环控制器&#xff1a;指定迭代次数&#xff0c;可以用具体数字&#xff0c;也可以通过变量控制永远&#xff1a;表示无限循环点击查看示例&#xff1a;Jmeter实例(四)_图片爬虫简单控制器&#xff1a;这是最基础的一个控制器&#xff0c;它可以让脚本分层&#xff0c;变成一个…

c 复杂的前置后置面试题_OPPO Reno拆解:优秀工艺由外而内,复杂用料不负旗舰之名...

OPPO的新系列Reno手机最近吸引了不少注意力&#xff0c;不管是消费者还是手机极客都对其优秀的性能和强大的配置抱有极大的兴趣。最近&#xff0c;知名数码博主爱玩客对Reno十倍变焦版进行了拆解&#xff0c;从内部结构向我们揭示了这部手机的强大之处。并且点评道&#xff1a;…

差分矩阵

题目描述 输入一个n行m列的整数矩阵&#xff0c;再输入q个操作&#xff0c;每个操作包含五个整数x1, y1, x2, y2, c&#xff0c;其中(x1, y1)和(x2, y2)表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将选中的子矩阵中的每个元素的值加上c。 请你将进行完所有操作后…

框架controller找不到_SpingBoot框架知识详解

Spring boot框架1、什么是Spring Boot&#xff1f;​ Spring Boot是Spring开源组织下的子项目&#xff0c;是Spring组件一站式解决方案&#xff0c;主要是简化了使用Spring的难度&#xff0c;简省了繁重的配置&#xff0c;提供了各种启动器&#xff0c;开发者能快速上手。Sprin…

架构的演变

基本概念 在介绍架构之前&#xff0c;为了避免部分读者对架构设计中的一些概念不了解&#xff0c;下面对几个最基础的概念进行介绍。 1.什么是分布式&#xff1f; 系统中的多个模块在不同服务器上部署&#xff0c;即可称为分布式系统&#xff0c;如Tomcat和数据库分别部署在…

axure8.0导出页面打不开问题_excel怎么转pdf?excel打不开?转换成PDF就行了

excel转pdf怎么做&#xff1f;年底最后一天了&#xff0c;我都被一堆的Excel文件搞得头疼&#xff0c;在这些时间里&#xff0c;要让我对几个G的文件进行操作&#xff0c;我已经是忙得不可开交&#xff0c;而在最后的最后&#xff0c;我的主管还说他的电脑无法打开我的Excel 了…

python怎么爬虫理数据_Python神技能 | 使用爬虫获取汽车之家全车型数据

最近想在工作相关的项目上做技术改进&#xff0c;需要全而准的车型数据&#xff0c;寻寻觅觅而不得&#xff0c;所以就只能自己动手丰衣足食&#xff0c;到网上获&#xff08;窃&#xff09;得&#xff08;取&#xff09;数据了。汽车之家是大家公认的数据做的比较好的汽车网站…

linux运算_CentOS「linux」学习笔记22:算术运算符、逻辑运算符、关系运算符

​linux基础操作&#xff1a;主要介绍啦算术运算符、逻辑运算符、关系运算符1.算术运算符[主要用来计算数值]注意使用expr运算时运算符和数值之间需要有空格&#xff0c;其他方式运算时不能有空格。常用算术运算符号&#xff1a;表示相加&#xff0c;&#xff0d;表示相减&…

python实现小型搜索引擎设计_基于JAVA的中小型饭店餐饮管理系统的设计与实现...

好程序设计擅长JAVA(SSM,SSH,SPRINGBOOT)、PYTHON(DJANGO/FLASK)、THINKPHP、C#、安卓、微信小程序、MYSQL、SQLSERVER等&#xff0c;欢迎咨询今天将为大家分析一个中小型饭店餐饮管理系统(俗话说“民以食为天”,中国的饮食文化有着久远的历史。“吃”不仅仅指的是填饱肚子,它早…

评估报告有效期过期了怎么办_托福成绩过期了怎么办?

托福成绩是有期限的&#xff0c;考生申请美国大学的时候也只能在托福成绩有效期内。所以考托福的时候一定要关注一下托福成绩什么时候过期&#xff0c;以及大学申请的截止日期&#xff0c;提前做好安排。下面我们一起看看关于托福成绩有效期的相关问题。托福成绩有效期是多久&a…

装配组件_基于Haption力反馈系统的交互式装配仿真

在一个新工业产品的设计过程中&#xff0c;装配规划是非常重要的任务。如果规划不好将造成很大的资金浪费&#xff0c;致使组件不能正确地集成。例如典型问题&#xff1a;移动一个组件到指定位置但空间不足&#xff1b;使用工具够不到螺丝&#xff1b;操作者没有足够的视域以保…

作为唯一索引_Mysql什么情况下不走索引?

本文基于Mysql5.7版本和InnoDB存储引擎。1、InnoDB索引组织表在InnoDB引擎中&#xff0c;表都是按照主键顺序组织存放的&#xff0c;这种存放方式的表称为索引组织表。InnoDB存储引擎中的表&#xff0c;都有主键&#xff0c;如果没有显式声明主键&#xff0c;则采取以下措施&am…