当前位置:实例文章 » 其他实例» [文章]leetcode08. 字符串转换整数 (atoi)

leetcode08. 字符串转换整数 (atoi)

发布人:shili8 发布时间:2025-01-10 05:17 阅读次数:0

**字符串转换整数 (atoi)**在 LeetCode 中,第8 个问题是 "字符串转换整数 (atoi)"。这个问题要求我们实现一个函数 `atoi`,它可以将一个给定的字符串转换为整数。

###问题描述给定一个字符串 `s`,请实现函数 `atoi`,将该字符串转换为整数(以十进制)。如果可能,则返回该整数的值。否则返回0。

**注意:**

* 当 `s` 的前几个字符是空格时,我们应该忽略它们。
* 如果 `s` 中的第一个非空白字符不是数字或符号位,我们应该返回0。
* 如果 `s` 中存在多个连续的空格,我们应该忽略它们。
* 如果 `s` 是负数,我们应该将其转换为正数。
* 如果 `s` 的值超出了32 位有符号整数的范围(即,-2^31 <= val <=2^31 -1),我们应该返回0。

### 示例示例1:

输入:`"42"`

输出:`42`

解释:没有任何错误,这个函数将 "42" 转换为整数42。

示例2:

输入:`"-42"`

输出:`-42`

解释:这个函数将 "-42" 转换为整数 -42。

示例3:

输入:`"4193 with words"`

输出:`4193`

解释:这个函数将 "4193 with words" 转换为整数4193,因为它忽略了非数字字符。

示例4:

输入:`"-1"`

输出:`-1`

解释:这个函数将 "-1" 转换为整数 -1。

示例5:

输入:`"words and987"`

输出:`0`

解释:这个函数返回0,因为它忽略了非数字字符。

### 解决方案我们可以使用一个循环来遍历字符串 `s`,并且在每次迭代中,我们检查当前字符是否是数字或符号位。如果是,我们将其转换为整数,并更新结果值。否则,我们返回0。

def atoi(s: str) -> int:
 """
 将一个给定的字符串转换为整数(以十进制)。

 Args:
 s (str): 要转换的字符串。

 Returns:
 int: 转换后的整数值。
 """

 # 移除前导空白符 s = s.lstrip()

 # 如果 s为空或第一个非空白字符不是数字或符号位,则返回0 if not s or (s[0] != '-' and s[0] != '+' and not s[0].isdigit()):
 return0 # 初始化结果值和符号位 result =0 sign =1 # 如果第一个非空白字符是负号,则更新符号位 if s[0] == '-':
 sign = -1 s = s[1:]

 # 遍历剩余的字符串并将其转换为整数 for char in s:
 if not char.isdigit():
 break result = result *10 + ord(char) - ord('0')

 # 更新结果值并返回 result *= sign return max(min(result,2**31 -1), -2**31)


### 测试我们可以使用以下测试用例来验证 `atoi` 函数的正确性:

print(atoi("42")) # 输出:42print(atoi("-42")) # 输出:-42print(atoi("4193 with words")) # 输出:4193print(atoi("-1")) # 输出:-1print(atoi("words and987")) # 输出:0


### 总结在本文中,我们实现了一个 `atoi` 函数,它将一个给定的字符串转换为整数(以十进制)。我们使用循环遍历字符串,并且在每次迭代中,我们检查当前字符是否是数字或符号位。如果是,我们将其转换为整数,并更新结果值。否则,我们返回0。

我们还提供了测试用例来验证 `atoi` 函数的正确性。

相关标签:
其他信息

其他资源

Top