题目:字符串转整数

这个问题解答的思路跟上个翻转整数一样,都是通过long long类型存储一个结果字符串,然后返回int区域内大小的数字。

这道题我出了好几次问题,后来才发现是因为没有仔细读题,题目只说了去除刚开始遇到的空格而我去除全部了。

我写出的正确的代码如下(效率超过了100%):

static const auto io_speed_up = []()
{
    std::ios::sync_with_stdio(false);
    cin.tie(nullptr);
    return 0;
}();

class Solution {
public:
    int myAtoi(string str) {
        size_t index    = 0;
        bool flag = false;
        long long res = 0;
        while (str[index] == ‘ ‘)
            ++index;

        if (str[index] == ‘-‘)
        {
            flag = true;
            ++index;
        }
        else if(str[index] == ‘+‘)
            ++index;

        while (str[index] >= ‘0‘ && str[index] <= ‘9‘ && res < INT_MAX)
        {
            res = res * 10 + str[index] - ‘0‘;
            ++index;
        }
        if (flag)
            res = -res;
        if (res > INT_MAX)
            return INT_MAX;
        if (res < INT_MIN)
            return INT_MIN;
        return (int)res;
    }
};

这道题有一个有意思的地方在于,传递的是一个字符串,那么最后一位即str[str.size()]位一定是一个‘\0‘字符,这个字符必然不会满足数字字符或者空字符的条件。这意味着我们在做这道题中,只要设置好条件,就不用关心字符串长度的问题(每个循环都会少一次判断)。

原文地址:https://www.cnblogs.com/change4587/p/9170702.html

时间: 2024-10-10 21:57:53

题目:字符串转整数的相关文章

编程算法 - 把字符串转换为整数 代码(C)

把字符串转换为整数 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 写一个函数StrToInt, 模拟atoi的功能, 把字符串转换为整数. 须要考虑异常处理, 正负数, 还有Int的最大值(0x7FFFFFFF)和最小值(0x80000000)等情况. 代码: /* * main.cpp * * Created on: 2014.7.12 * Author: spike */ #include <stdio.h> #include &l

字符串转换为整数”123“-&amp;gt;123

字符串转换为整数"123"->123 题目描写叙述: 输入一个由数字组成的字符串.把它转换成整数并输出. 比如:输入字符串"123".输出整数123. 给定函数原型 int StrToInt(const char *str) .实现字符串转换成整数的功能.不能使用库函数atoi. 题目分析: 将字符串正确转化为整数步骤 ①当扫描第一个字符'1'时候,因为为第一位.所以直接得到数字1 ②当扫描第二个字符'2'时候,1*10+2 = 12 ③继续扫描字符'3'时候

字符串转换为整数”123“-&gt;123

字符串转换为整数"123"->123 题目描述: 输入一个由数字组成的字符串,把它转换成整数并输出.例如:输入字符串"123",输出整数123. 给定函数原型 int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi. 题目分析: 将字符串正确转化为整数步骤 ①当扫描第一个字符'1'时候,由于为第一位,所以直接得到数字1 ②当扫描第二个字符'2'时候,1*10+2 = 12 ③继续扫描字符'3'时候,12

【剑指offer】字符串转整数

转载请注明出处:http://blog.csdn.net/ns_code/article/details/28015693 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入: 输入可能包含多个测试样例.对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1<= n<=10000000). 输出: 对应每个测试案例,若输入为一个合法的字符串(即代表一个整数),则输出这个整数.若输入为一个非法的字符串,则输出"My God". 样

leetcode - String to Integer (atoi) 字符串转整数

Implement atoi to convert a string to an integer. Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases. 题目:实现字符串转整数 注意事项:考虑好各种可能的输入(坑); public class Solution

Leetcode8---&gt;String to Integer(实现字符串到整数的转换)

题目: 实现字符串到整数的转换 解题思路: 下面给出这道题应该注意的一些细节: 1. 字符串“    123   ” = 123: 2.   字符串“+123” = 123: 3.   字符串“-123” = -123: 4.   字符串“-” = 0:“+” = 0: 5.   字符串“123-” = 123: 6.   字符串“21474836478” = 2147483647(Integer.MAX_VALUE) 7.   其余情况都是非法输入,一律返回0: 代码如下: 1 public

【简单算法】17.字符串转整数(atoi)

题目: 实现 atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值.如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数. 字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响. 当字符串中的第一个非空字符序列不是个有效的整数:或字符串为空:或字符串仅包含空白字符时,则不进行转换. 若函数不能执行有效

[LeetCode] 字符串转整数

字符串转换整数(atoi) 题目描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号:假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数. 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响. 注意:假如该字符串中的第一个

【剑指Offer-面试案例】面试题66:把字符串转为整数

题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 思路 首先判断该数字是整数还是负数,然后在转换的过程中判断字符串表示的数字是否溢出.题目的数字范围是有符号的int型整数,有符号的int型整数(4个字节)的范围为-2147483648 ~ +2147483647,也就是-0x80000000~0x7FFFFFFF.代码如下: class Solution { public: int StrToInt(string str)

LeetCode 44.字符串转换整数 (atoi)

题目描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数.假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数.该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响.注意:假如该字符串中的第一个非空格字符不