首页 > 其他分享 >剑指 Offer 67. 把字符串转换成整数

剑指 Offer 67. 把字符串转换成整数

时间:2023-07-19 22:33:39浏览次数:47  
标签:转换成 false cur Offer ans str && 67 minus

题目

class Solution {
public:
    int strToInt(string str) {
        if(str.size()==0)return 0;       #空字符串情况
        int cur=0;                       
        while(str[cur]==' ')cur++;       #直接从非空字符开始处理
        bool overflow=false;
        bool minus=false;
        unsigned int ans=0;
        if(str[cur]=='+'){               #字符串首位的'+' '-'分别处理
            cur++;
        }else if(str[cur]=='-'){
            cur++;
            minus=true;
        }
        while(str[cur]>='0'&&str[cur]<='9'){         #1.不需要str[cur]-'0'>=0&&str[cur]-'0'<=9这么麻烦  2.不要漏了等号=
            int temp=str[cur]-'0';
            if((ans>(INT_MAX-temp)/10&&minus==false)||(ans>((unsigned int)INT_MIN-temp)/10&&minus==true)){      #判断是否溢出,从ans*10+temp>INT_MAX变形而来
               overflow=true;
               break; 
            }
            ans=ans*10+temp;           #将字符串转化为整数的公式
            cur++;
        }
        if(overflow==false&&minus==false) return ans;         #包含了字符串首位不合法的情况(即也是overflow==false&&minus==false)
        if(overflow==false&&minus==true) return -ans;
        if(overflow==true&&minus==false) return INT_MAX;
        else return INT_MIN;
    }
};

标签:转换成,false,cur,Offer,ans,str,&&,67,minus
From: https://www.cnblogs.com/fly-smart/p/17566960.html

相关文章

  • 剑指 Offer 20. 表示数值的字符串
    题目:#遇到数字:一定合法#遇到'.'且合法需要满足条件:之前没出现过'.',之前没出现过'e'#遇到'e'且合法需要满足条件:之前没出现过'e',之前出现过整数#遇到'+'或者'-'且合法需要满足条件:位于字符串第一位,或者紧跟在'e'之后classSolution{public:boolisNumber(st......
  • 「解题报告」CF1067D Computer Game
    快国赛了,写点水题玩吧。首先容易有一个贪心策略:先以某种最优策略一直进行,直到成功一次后一直选择\(b_ip_i\)最大的进行。我们可以列出一个DP,设\(f_T\)表示在\(T\)时刻内期望最大收益,容易写出:\[f_T=\max\{p_i((T-1)v+a_i)+(1-p_i)f_{T-1}\}\]看起来就是可......
  • 剑指 Offer 58 - II. 左旋转字符串
    classSolution{public:stringreverseLeftWords(strings,intn){reverse(s.begin(),s.begin()+n);#反转用reverse而不是s.reversereverse(s.begin()+n,s.end());#这里用s.begin()+n而不是s.begin()+n+1,因为s.begin()是指向集......
  • 剑指 Offer 05. 替换空格
    classSolution{public:stringreplaceSpace(strings){intnumspace=0;for(inti=0;i<s.size();i++){if(s[i]==''){numspace++;}}intoldsize=s.size();s.r......
  • 剑指offer--链表
    第6题:链表中倒数最后k个结点题目描述输入一个长度为n的链表,设链表中的元素的值为\(a_i\),返回该链表中的第k个结点。如果该链表长度小于\(k\),请返回一个长度为0的链表思路双指针step1:准备一个快指针,从链表头开始,在链表上先走k步。step2:准备慢指针指向原始链表头,代......
  • python将16进制数组转换成字符串
    Python将16进制数组转换成字符串在编程中,我们经常需要处理不同的数据类型和格式。其中,16进制是一种十分常见的数据表示方式,特别在加密和通信领域中经常用到。本篇文章将介绍如何使用Python将16进制数组转换成字符串,并提供相应的代码示例。什么是16进制?在计算机科学中,16进制(Hexad......
  • python怎么把list强制转换成int
    如何将Python中的List强制转换为Int在Python中,我们经常需要处理各种数据类型,包括整数(int)和列表(list)。有时,我们需要将列表中的元素转换为整数类型,以便进行一些数值计算或其他操作。在本文中,我们将探讨如何将一个包含数字字符串的列表转换为整数列表。问题描述假设我们有一个列表,......
  • 决策单调性优化DP 学习笔记 & P4767 [IOI2000] 邮局 题解
    0.题面题目描述高速公路旁边有一些村庄。高速公路表示为整数轴,每个村庄的位置用单个整数坐标标识。没有两个在同样地方的村庄。两个位置之间的距离是其整数坐标差的绝对值。邮局将建在一些,但不一定是所有的村庄中。为了建立邮局,应选择他们建造的位置,使每个村庄与其最近的邮局......
  • 题解 P6772 [NOI2020] 美食家
    观察数据范围,\(T\)很大,\(n\)很小,用矩乘。对于一条边\((u,v,w)\),我们将\(u\)拆成\(w-1\)个点,并连接\((u_0,u_1,0),(u_1,u_2,0)...(u_{w-2},u_{w-1},0)\)和\((u_{w-1},v_0,c_{v})\),总点数\(5n\)。将美食节按时间排序,相邻两个美食节之间用矩阵快速幂转移,然后再加上附加......
  • 复杂数据回显 返回json 字符串转换成单选
     <el-table        :data="tableData"        border        style="width:882px;margin-left:8px;">        <el-table-column        prop="label"        label="......