- 标签:字符串处理、整数转换
题目描述
请你来实现一个 myAtoi(string s)
函数,使其能将字符串转换成一个整数。
函数 myAtoi(string s)
的输入参数为一个字符串 s
,你需要根据这个字符串转换并返回一个整数。如果转换失败,则返回 0。
示例:
输入: "42"
输出: 42
输入: " -42"
输出: -42
输入: "4193 with words"
输出: 4193
输入: "words and 987"
输出: 0
输入: "-91283472332"
输出: -2147483648 (即 INT_MIN,因为 -91283472332 小于 INT_MIN)
说明:
假设我们的环境只能存储 32 位大小的有符号整数,其数值范围是 [-2^31, 2^31 - 1]。如果数值超过这个范围,请返回 INT_MAX (2^31 - 1) 或 INT_MIN (-2^31)。
思路及实现
我们将分别使用 Java、C、Python3 和 Golang 来实现这个功能。
方式一:利用正则表达式和基础算法
思路
- 去除空格:首先去除字符串前面的空白字符。
- 正则表达式匹配:使用正则表达式匹配可能的整数部分(包括正负号)。
- 转换与边界检查:将匹配到的字符串转换为整数,并进行边界检查。
Java 版本
public class Solution {
public int myAtoi(String s) {
s = s.trim(); // 去除空格
// 正则表达式匹配整数部分
Pattern pattern = Pattern.compile("^([+\\-]?\\d+).*$");
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
String numStr = matcher.group(1);
try {
long num = Long.parseLong(numStr);