JZ67 把字符串转换成整数(atoi)

news2024/11/19 6:13:36

目录

一、题目

二、易错点+代码


一、题目

把字符串转换成整数(atoi)_牛客题霸_牛客网 (nowcoder.com)

二、易错点+代码

int类型运算可能出现溢出的现象,因此可采用将int类型数据的运算转换成long long类型

class Solution {
public:
    int  is(long long result)//用于将long long 类型转化成int类型
    {
        if (result > INT_MAX)
            return INT_MAX;
        else if (result < INT_MIN)
            return INT_MIN;
        else
            return (int)(result);
    }
    long long  isAdd(long long a, long long b)
    {
        long long result = a + b;
        return result;
    }

    void Pick_up(string str, vector<int>& num, int& k, int& mark)
    {
        if (str[0] != '+' && str[0] != '-') //第一个符号不是+和-
        {
            for (int i = 0; i < str.size(); i++) {
                if (str[i] - '0' >= 0 && str[i] - '0' <= 9)
                    num[k++] = str[i] - '0';

                else
                    break;
            }
        }

        else if (str[0] == '+' || str[0] == '-') //第一符号是+或者-
        {
            if (str[0] == '-') 
            {
                mark = -1;
            }
            for (int i = 1; i < str.size(); i++) {
                if (str[i] - '0' >= 0 && str[i] - '0' <= 9)
                    num[k++] = str[i] - '0';
                else
                    break;
            }
        }

    }
    int StrToInt(string str) 
    {
        int n = str.size();
        if (n == 0)
            return 0;
        
        int p = 0;
        while (p < n) //先把空格除掉
        {
            if (str[p] == ' ')
                p++;
            else
                break;
        }
        str = string(str, p, n - p);
        vector<int>num(str.size(), 0);
        int k = 0;//记录有多少位数字
        int mark = 1;//标识正负
        Pick_up(str, num, k, mark);


        long long sum = 0;
        int j = 0;

        while (--k > -1) {

            sum = isAdd(sum, mark * num[k] * (long long)pow(10, j));

            if (sum > INT_MAX)//判断是否溢出,溢出的话提前结束
                return INT_MAX;
            else if (sum < INT_MIN)
                return INT_MIN;
            else
                j++;
        }
        sum = is(sum);//long long类型的转换成int类型
        return sum;
    }
};

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

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

相关文章

Emacs之编译系统文件cc-mode.el.gz(一百二十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

leetcode每日一练-第108题-将有序数组转换为二叉搜索树

一、思路 递归 二、解题方法 在给定中序遍历序列数组的情况下&#xff0c;每一个子树中的数字在数组中一定是连续的&#xff0c;因此可以通过数组下标范围确定子树包含的数字&#xff0c;下标范围记为 [left,right]。对于整个中序遍历序列&#xff0c;下标范围从 left0到 ri…

【MySQL】视图与用户管理

【MySQL】视图 视图视图概念使用基表与视图的相互影响 用户管理新增用户删除修改密码 用户权限授予权限回收权限 视图 视图概念 视图就是一张虚拟表&#xff0c;其内容由查询定义。与真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化影响到基表&…

GEE学习02 --设置Jupyter Notebook的打开路径

直接双击Jupyter Notebook 桌面图标运行时&#xff0c;打开的文件路径是默认的&#xff1a;C&#xff1a;\用户\用户名 如果使用python命令提示符打开jupyter notebook &#xff0c; 而我新建的GEE学习文件夹在另一个路径&#xff0c;可以直接修改默认的保存路径&#xff1a;…

Ebay婴儿活动床栏CPC认证 ASTM F2085

活动床栏旨在防止儿童从床上掉落。活动床栏可以安装在床的一侧或床垫表面。活动床栏适用于可以在没有帮助的情况下上下床的儿童&#xff0c;通常为二至五岁的儿童。本政策涵盖泡沫、充气和刚性活动床栏。 根据亚马逊的要求&#xff0c;所有活动床栏均应经过检测&#xff0c;并且…

算法题--找规律(构建乘积数组、剪绳子、圆圈中最后剩下的数字)

目录 找规律 构建乘积数组 原题链接 解析 核心思想 答案 剪绳子 原题链接 解析 核心思想 答案 圆圈中最后剩下的数字 原题链接 解析 核心思想 答案 找规律 需要通过列举多个示例&#xff0c;从多个示例的输入到输出中得到规律去普遍化。 构建乘积数组 给定…

【黑马头条之kafka及异步通知文章上下架】

本笔记内容为黑马头条项目的kafka及异步通知文章上下架部分 目录 一、kafka概述 二、kafka安装配置 三、kafka入门 四、kafka高可用设计 1、集群 2、备份机制(Replication&#xff09; 五、kafka生产者详解 1、发送类型 2、参数详解 六、kafka消费者详解 1、消费者…

国内最大Llama开源社区发布首个预训练中文版Llama2

"7月31日&#xff0c;Llama中文社区率先完成了国内首个真正意义上的中文版Llama2-13B大模型&#xff0c;从模型底层实现了Llama2中文能力的大幅优化和提升。毋庸置疑&#xff0c;中文版Llama2一经发布将开启国内大模型新时代&#xff01; | 全球最强&#xff0c;但中文短板…

Ubuntu20.04进入桌面后左上角光标闪动

T 光标闪烁就是后台一系列活动的简化&#xff0c;它表示后台有一系列活动在进行&#xff0c;只是我们看不到。也因此让我们觉得它像是卡住了。 Y 一开始误以为是由于我安装其他启动动画导致的&#xff0c;后来换回默认的动画发现不是这个原因。 后来我试了各种方法&#xff…

Android安卓实战项目(7)---购物APP(源码在文末)

Android安卓实战项目&#xff08;7&#xff09;—购物APP&#xff08;源码在文末&#x1f415;&#x1f415;&#x1f415;&#xff09; 一.项目运行介绍 【bilibili展示】 https://www.bilibili.com/video/BV1xh4y1C7o1/?share_sourcecopy_web&vd_sourceb2e9b9ed746acd…

Linux系统安装部署MongoDB完整教程(图文详解)

前言&#xff1a;本期给大家分享一下目前最新Linux系统安装部署MongoDB完整教程&#xff0c;我的服务器采用的是Centos7&#xff0c;在部署之前我重装了我的服务器&#xff0c;目的是为了干净整洁的给大家演示我是如何一步步的操作的&#xff0c;整体部署还是挺简洁&#xff0c…

Vue3基础知识(待续)

Vue是什么 构用户界面的js的渐进式框架&#xff0c;基于htlm、css、js&#xff0c;并提供声明式组件化的编程模型&#xff0c;帮你高效开发用户界面。无论简单或复杂的界面Vue都可以胜任。 vue是一个框架&#xff0c;同时也是一个生态。因为有很多程序员支持vue&#xff0c;开…

【Python】Web学习笔记_flask(4)——钩子函数

钩子函数可以用来注册在请求处理的不同阶段执行出 Flask的请求钩子指的是在执行视图函数前后执行的一些函数&#xff0c; 之前是有4种&#xff0c;但是 before_first_request已经被删除了&#xff0c;使用时会报错 before_request&#xff1a;在每次请求前执行&#xff0c;…

Arc A770M的蝰蛇峡谷迷你电脑主机值得入手吗?

相比于已经走上正轨的NUC迷你电脑产品&#xff0c;英特尔的独显&#xff0c;特别是最新一代Arc&#xff08;锐炫&#xff09;还是犹抱琵琶半遮面。通过蝰蛇峡谷NUC&#xff0c;它算是正式亮相了。 这里的Serpent Canyon是英特尔NUC系列的最新产品。它在NUC 12 Enthusiast版本中…

高级C语言

1.day1 1、mobaxterm使用 1、更方便的使用虚拟机终端&#xff1b; 2、新建一个终端&#xff0c;CTRL SHIFT U; 3、清屏&#xff0c;CTRL L; 2、gdb调试 参考《gdb调试器练习》 2.day2 3.day3 1、vin自动生成main函数 1&#xff09;打开vim的配置文件&#xff1b; s…

【开源源码学习】

C 迷你高尔夫 一款打高尔夫的游戏。亮点是碰撞反应和关卡设计。 GitHub - mgerdes/Open-Golf: A cross-platform minigolf game written in C. TypeScript 俄罗斯方块 复刻经典的俄罗斯方块&#xff0c;项目采用ReactReduxImmutable的技术栈。 GitHub - chvin/react-tetr…

【Web】基于C#的学生选课系统开发

目录 一、实验目的二、设计数据库表三、设计学生、课程和已选课程类四、 系统流程图五、功能流程图六、总结 一、实验目的 1、设计学生类&#xff08;学号 | 姓名 | 班级 | 初始密码&#xff09; 2、设计课程类&#xff08;课程代码 | 课程名称 | 学分&#xff09; 3、设计已选…

HTML5 Canvas(画布)

<canvas>标签定义图形&#xff0c;比如图表和其他图像&#xff0c;你必须用脚本来绘制图形。 在画布上&#xff08; Canvas &#xff09;画一个共红色矩形&#xff0c;渐变矩形&#xff0c;彩色矩形&#xff0c;和一些彩色文字。 什么是 Canvas&#xff1f; HTML5<c…

数据库的分库分表

#!/bin/bash ######################### #File name:db_fen.sh #Version:v1.0 #Email:admintest.com #Created time:2023-07-29 09:18:52 #Description: ########################## MySQL连接信息 db_user"root" db_password"RedHat123" db_cmd"-u${…

linux安装Tomcat及部署jpress的详细教程!!!

一、YUM在线安装 1、查看Tomcat相关安装包 [rootlocalhost ~]# yum list | grep tomcat tomcat.noarch 7.0.76-16.el7_9 updates tomcat-admin-webapps.noarch 7.0.76-16.el7_9 updates tomcat-docs…