把字符串转换成整数

article/2025/10/2 23:00:12

文章目录

  • 1. 题目描述
  • 2. 解题思路
  • 3. 代码实现


1. 题目描述

题目链接:把字符串转换成整数

在这里插入图片描述

2. 解题思路

用一个 index 全程记录字符串下标。按照题目要求的点,先排除前导空格,再检查符号,最后转换数字,遇到非数字即停止转换,直接输出前面部分,最后注意边界等情况。一个遍历即可解决。

算法如下:

(1)去掉无用的前导空格

(2)第一个非空字符为 + 或者 - 号时,作为该整数的正负号,如果没有符号,默认为正数

(3)判断整数的有效部分,确定符号位之后,与之后面尽可能多的连续数字组合起来成为有效整数数字,如果没有有效的整数部分,那么直接返回 0

(4)将字符串前面的整数部分取出,后面可能会存在存在多余的字符(字母,符号,空格等),这些字符可以被忽略,它们对于函数不应该造成影响

注意:

(1)将字符转换为数字的方法:c - '0'

(2)求和公式:sum = sum * 10 + (c - '0')

3. 代码实现

代码示例

class Solution {
public:int StrToInt(string str) {// 求和公式:sum = sum * 10 + (c - '0')int index = 0; //遍历字符串下标int sign = 1; //符号位long long sum = 0; //存放整数//排除前导空格(也可以不写,因为题目没有说有空格)while (index < str.size()){if (str[index] != ' ') //如果第一个字符不是空格,那么直接退出break;index++;}//判断正负数的情况if (str[index] == '-') {sign = -1;index++;}else if (str[index] == '+') {index++;}//开始遍历while (index < str.size()){if (str[index] >= '0' && str[index] <= '9') { //如果字符合法,那么直接累加sum = sum * 10 + (str[index] - '0');index++;}else { //否则直接返回0sum = 0;break;}}sum *= sign; //最后乘以符号位return sum;}
};

http://chatgpt.dhexx.cn/article/JIdZ9APc.shtml

相关文章

字符串整数之间的转换

在数字和字符之间转换 一、整数转字符 1.在后面加’0‘即可&#xff0c;如&#xff1a;‘1’‘0’ 这样做可行是因为字符0到字符9在ascii编码时是连续的&#xff0c;字符0的ascii值是48&#xff0c;字符1的ascii值是49&#xff0c;其他数字字符依次往后排&#xff0c;而ascii值…

把字符串转换成整数(最详细解答)

题目要求&#xff1a; 分析&#xff1a; 把一个一个字符以整数的形式来进行输出&#xff0c;需要考虑相互转化的问题不能使用库函数&#xff01;&#xff01;&#xff01;首尾会有空格&#xff08;进行去空格操作&#xff0c;可以减少不必要的判断&#xff09;区分正负正数结果…

高并发系统架构设计之微服务篇19: 微服务拆分

文章目录 引言一、一体化架构的痛点1. 技术层面数据库连接数成为系统瓶颈2. 一体化架构增加了研发的成本&#xff0c;抑制了研发效率3. 一体化架构对于系统的运维也会有很大的影响。 二、如何解决这些痛点小结 引言 通过前面几个篇章的内容&#xff0c;你已经从数据库、缓存和…

理解分布式系统中的垂直拆分和水平拆分

概念 水平拆分简单字面意思是&#xff1a;水平方向上由一个拆分为多个。垂直拆分简单字面意思是&#xff1a;垂直方向上由一个拆分为多个。 1&#xff0c;垂直拆分 垂直拆分指按照功能进行拆分&#xff0c;秉着“专业的人干专业的事”的原则&#xff0c;把一个复杂的功能拆分…

垂直拆分和水平拆分

概念介绍 垂直拆分   垂直拆分就是要把表按模块划分到不同数据库表中&#xff08;当然原则还是不破坏第三范式&#xff09;&#xff0c;这种拆分在大型网站的演变过程中是很常见的。当一个网站还在很小的时候&#xff0c;只有小量的人来开发和维护&#xff0c;各模块和表都在…

软件架构设计之系统耦合性拆分

软件架构设计之系统模块的拆分 基本概念功能模块循环依赖问题 模块拆分原则高内聚性低耦合性 模块拆分方式模块拆分示例业务需求业务分析项目原始代码需求重构项目代码重构 总结 基本概念 功能模块拆分: 全面了解业务需求后,以寻找大量内聚性调用确定模块边界为目的,以寻求应用…

浅谈系统拆分

今晚好冷啊&#xff0c;回去的路上&#xff0c;我突然想到一件关于系统拆分的事情。举的例子很极端&#xff0c;仅供参考&#xff0c;不一定有实际的意义 我感觉拆分系统&#xff0c;和拆分代码&#xff0c;本质上是一样的。小到一个方法&#xff0c;大到几个系统&#xff0c;都…

分布式AKF拆分原则

1. 前言 当我们需要分布式系统提供更强的性能时&#xff0c;该怎样扩展系统呢&#xff1f;什么时候该加机器&#xff1f;什么时候该重构代码&#xff1f;扩容时&#xff0c;究竟该选择哈希算法还是最小连接数算法&#xff0c;才能有效提升性能&#xff1f; 在面对 Scalabilit…

记一次业务系统拆分的数据迁移及系统切换事项

一.迁移背景 老系统使用商业化软件&#xff0c;同时包含模块较多&#xff0c;架构无法支撑&#xff0c;维护成本高等考虑&#xff0c;需要根据业务模块拆分多个系统&#xff0c;新系统支持水平扩缩容 &#xff0c;rcp框架等&#xff0c;新系统基本上包含常用的技术栈&#xff…

拆分盘系统开发

转载于:https://blog.51cto.com/12916096/1925453

微服务拆分之AKF原则

AKF是指可拓展模型&#xff0c;有3个坐标轴&#xff0c;分别是x&#xff0c;y&#xff0c;z 为了更好的诠释AKF原则&#xff0c;下面假定有一个系统 基于x轴拓展&#xff1a; 这种方式只能拓展无状态服务&#xff0c;是通过复制系统应用到其他服务器上&#xff0c;再通过给集群…

拆分系统拆分盘盛出不穷,互助系统的延续走出新的路子,农场果园直销系统返利系统开始火了!

在互联网时代&#xff0c;互助盘已经开始落伍了&#xff0c;时代是在进步&#xff0c;现在出现了新的营销模式拆分盘系统模式。 而且非常受大家欢迎&#xff0c;那么什么是拆分盘系统呢&#xff1f; 打个比方&#xff0c;如果发行100分财富&#xff0c;你购买其中的一份财富。 …

分布式架构之系统拆分

系统拆分是单体程序向分布式系统演变的关键一步&#xff0c;也是很重要的一步&#xff0c;拆分的好坏直接关系到未来系统的扩展性、可维护性和可伸缩性等&#xff0c;拆分工作不难理解&#xff0c;但是如何正确拆分、有什么样的方法和原则能帮助我们拆分得到一个我们理想中的系…

水平拆分

水平拆分 概述水平分库示例水平拆分的优点水平拆分的缺点分片原则 概述 水平拆分指的是通过某种策略将数据分片存储&#xff0c;包含库内分表和分库两种&#xff0c;每片数据会分散到不同的MySQL表或库&#xff0c;达到分布式的效果&#xff0c;能够支持非常大的数据量。前面的…

微服务拆分策略

拆分策略可以按功能和非功能维度进行考虑&#xff0c;功能维度主要是划分清楚业务的边界&#xff0c;非功能维度主要考虑六点包括扩展性、复用性、高性能、高可用、安全性、异构性。接下来详细介绍下。 1、功能维度 功能维度主要是划分清楚业务边界&#xff0c;采用的主要设计…

微服务拆分

如何定义一个微服务架构&#xff1f;通常情况下&#xff0c;定义应用程序架构分三步。但是&#xff0c;世界上并没有一个机械化的流程可以遵守&#xff0c;然后指望这个流程输出一个合理的架构。这里只能介绍一个笼统的方法&#xff0c;现实世界中&#xff0c;这是一个不断迭代…

每日一题:为什么要进行系统拆分?

原文来自 GitHub 开源社区 Doocs&#xff0c;欢迎 Star 此项目&#xff0c;如果你有独到的见解&#xff0c;同样可以参与贡献此项目。 面试题 为什么要进行系统拆分&#xff1f;如何进行系统拆分&#xff1f;拆分后不用 dubbo 可以吗&#xff1f; 面试官心理分析 从这个问题开始…

个人对系统拆分的理解

在本人现在的公司和本人工作过的上一家公司&#xff0c;本人有幸参与并实施了公司业务系统的架构拆分&#xff0c;现将之前的工作总结下。 1&#xff0c;为什么要进行系统拆分 首先我们需要想想&#xff0c;到底什么样的系统需要进行拆分&#xff1f;并不是所有的系统都需要进…

登录+注册界面的实现(代码)

先看效果图&#xff01; 话不多说&#xff0c;直接上代码&#xff01; //布局文件&#xff1a;activity_login.xml <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android&qu…

简单WEB登录页面代码实现

longin.html&#xff1a;登录页面&#xff0c;此处action引用**/**类型的地址&#xff0c;JSP可以用${ pageContext.request.contextPath }/LS <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&qu…