首页 > 其他分享 >23/1/119-LeetCode 08:String to Integer (atoi)

23/1/119-LeetCode 08:String to Integer (atoi)

时间:2023-01-20 14:22:05浏览次数:44  
标签:return String 23 INT MAX 08 negative ++ ans

思路

  • 主要是对于前面的零,可以不用再去特殊判断了嘛。直接当成普通的数字直接算就好,反正算完之后ans=0,no difference;
  • 对于超出范围,这个一直都是我不太注意的地方,这里max=2^31-1=INT_MAX=+2147483647.
    所以我的倒数第二个ans如果已经到了INT_MAX/10,214748364,如果最后一个数字还比7大,那就直接输出INT_MAX=2147483647;
    当然负数的时候INT_MIN=-2147483648,和8比较
    所以两个都可以直接用>7判断,positive的时候=7就直接算在ans里面,negative>7的时候直接return INT_MIN;
点击查看代码
class Solution {
public:
    int myAtoi(string s) {
        int i = 0, boundry = INT_MAX/10;
        bool negative = false;
        long long ans = 0;

        while(s[i] == ' ') ++i;
        if(s[i] == '-')
        {
            negative = true;
            ++i;
        }
        else if(s[i] == '+') ++i;
        for(; i < s.length(); ++i)
        {
            if(s[i] < '0' || s[i] > '9') break;
			if(ans>boundry || s[i]>'7' && ans==boundry)
				return negative?INT_MIN:INT_MAX;
            ans = 10*ans + (s[i]-'0');
        }
        if(negative) return ans * -1;
        return ans;
    }
};

标签:return,String,23,INT,MAX,08,negative,++,ans
From: https://www.cnblogs.com/sectumsempra/p/17062737.html

相关文章

  • C++获取含有中文字符的string长度
    :前言造车轮的时候要用到中文字符串的长度辨别,发现char的识别不准,进行了一番研究。>开始研究在Windows下,中文字符在C++中的内存占用为2字节,此时采用字符串长度获取函......
  • WC2023 解题报告
    WC2023解题报告stairs考虑阶梯的右下折线,称竖线为0,横线为1,从上到下形成一个01序列。原题要求的子楼梯边界格数转化成01序列里靠前的0和靠后的1的位置差。我......
  • 算法--2023.1.20
    1.acwing842--排列数字importjava.util.Deque;importjava.util.LinkedList;importjava.util.List;importjava.util.Scanner;publicclassMain{publicst......
  • 308. 最廉价的回文串 Cheapest Palindrome(挑战程序设计竞赛)
    地址https://www.papamelon.com/problem/308给定一个长度为m(m≤2000)的小写字母字符串,在给定组成该字符串的n(n≤26)个字符的添加和删除费用,求使原字符串变为......
  • 2023-1-20 #29 “不会有全世界陪你沉睡的童话”
    昨天vp:ICPC2022Nanjing。K题比较弱智,但是后面摆了,懒得写。本来录屏了,后来感觉打的不太行就删掉了。160EColortheTree很难的啊!没想到大家都会做。可以发现不同......
  • 20230120 常用动词
    Ifyoulookcarefullyyoucanseethatthepaintingrepresentsahumanfigure.如果仔细看,就会看出画上是一个人形。Ginacoveredhereyes,afraidtolook.吉娜......
  • string 接收 char 随机数abcd
    packagecom.fqs.demo;importjava.util.Random;publicclassCharAB{//输出26个小写字母和26个大写字母publicstaticvoidmain(String[]args){......
  • 题解 ABC231D【Neighbors】
    首先,每个数不能有超过两个相邻元素,不然无法构成一条链。可以通过记录每个数出现次数(度数)来判断。其次,给的信息不能成环,不然也无法构成一条链。可以通过并查集来判断。在......
  • abc 232 F - Simple Operations on Sequence
    题意:求把数组a[]变成b[]的最小花费。有两种操作:花费\(X\)把任一元素\(+1/-1\)花费\(Y\)交换相邻的两个数\(n\le18\)思路:很帅的状压dp!看到\(n\le18\),......
  • 2023 r00t 奶茶题
    2023r00t奶茶题URLpythoncls代表类本身,self代表类实例;@classmethoddeffunc(cls,...): ... ret前要带着@classmethod指定下一个函数为类方法,首参数为cls......