Leetcode篇:字符串转为整数



@author: ZZQ

@software: PyCharm

@file: myAtoi.py

@time: 2018/9/20 20:54

要求:实现 atoi,将字符串转为整数。

1)根据需要丢弃任意多的空格字符,直到找到第一个非空格字符为止
2)如果第一个非空字符是正号或负号,选取该符号;
3) 将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。
4) 如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。
5) 字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。
6) 当字符串中的第一个非空字符序列不是个有效的整数;或字符串为空;或字符串仅包含空白字符时,则不进行转换。
7) 若函数不能执行有效的转换,返回 0。

说明:

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [?2^31, 2^31 ? 1]。

如果数值超过可表示的范围,则返回 INT_MAX (2^31 ? 1) 或 INT_MIN (?2^31) 。

class Solution():
    def __init__(self):
        pass

    def myAtoi(self, str):
            """
            :type str: str
            :rtype: int
            """
            # 导入正则模块
            import re
            # 字符串中查找全部符合条件的整数,返回的是列表,第一个参数是正则,第二个参数是字符串
            # strip()字符串去空格
            ret = re.findall(r"^[-+]?\d+", str.strip())
            # 判断是否有匹配的值,没有的话返回0,例如"word values 987",匹配不到,返回0
            if ret:
                ret_str = ret[0]  # 匹配的数字的字符串
                ret_str2 = ""  # 记录去符号的字符串,ret_str后面还要使用,所以定义一个新的变量记录
                # 判断是否带有符号 + or -
                if ret_str[0] == "-" or ret_str[0] == "+":
                    ret_str2 = ret_str[1:]
                else:
                    ret_str2 = ret_str
                # str转int
                ret_int = int(ret_str2)
                # 判断第一个字符是否为负号
                if ret_str[0] == "-":
                    # 三目运算符,判断是否溢出
                    # 如果ret_int <= 2**31则返回-ret_int,否则返回-2**31
                    return -ret_int if ret_int <= 2**31 else -2**31
                else:
                    return ret_int if ret_int < 2**31 else 2**31-1
            else:
                return 0

if __name__ == "__main__":
    answer = Solution()
    str = "   -42"
    print(answer.myAtoi(str=str))

原文地址:https://www.cnblogs.com/zzq-123456/p/9721283.html

时间: 2024-11-10 15:16:50

Leetcode篇:字符串转为整数的相关文章

[LeetCode] String to Integer (atoi) 字符串转为整数

Implement atoi to convert a string to an integer. Hint: 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. Notes: It is intended for this problem to be spe

LeetCode刷题-008字符串转为整数

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

整数装换为字符串intToArray与字符串转为整数 arrayToInt实现

7.  整数装换为字符串itoa的实现 1 char *intToArray(int number, char *str) 2 { 3 if(str == NULL) 4 { 5 return NULL; 6 } 7 char *ret = str; 8 char *left = str; 9 char temp = '\0'; 10 // 负数的处理 11 if(number < 0) 12 { 13 number = -number; 14 *ret++ = '-'; 15 left++;

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

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

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

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

49、把字符串转为整数

思路:合法字符的话,取得该位数字并不断*10相加 注意: 输入的是非法字符,null,,有非数字的字符 输入的有正负号 只输入+,- 有没有超出最大最小的整数 public class Solution { public int StrToInt(String str) { boolean legal ;//是否合法输入 if(str == null || str.length() == 0){ return 0; } String s = str.trim();//去掉首位字符 int len

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

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

leetcode——8. 字符串转换整数 (atoi)

看着挺简单,结果不断出错不断修改,就很容易绕晕了,用了一个小时四十分钟左右才完成...好慢哦: class Solution(object): def myAtoi(self, str): """ :type str: str :rtype: int """ a=str.lstrip() if len(a)<1: return 0 if len(a)==1: if a[0] not in '0123456789': return 0 els

leetcode 8 字符串转整数

class Solution { public: int myAtoi(string str) { int sign=0; int firstNonSpace; int lastNonSpace; for(firstNonSpace=0;firstNonSpace<str.size();firstNonSpace++){ if(str[firstNonSpace]!=' '){ break; } } if(firstNonSpace==str.size()){ return 0; } else{