问题描述
实现函数 atoi 。函数的功能为将字符串转化为整数
提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。
输入描述:
输入一个字符串
输出描述:
输出字符串的整数
示例
示例1
输入
“123”
输出
123
解决思路
分析
- 通过遍历方式加和计算,注意需要处理正负号和字母的情况,以及数越界的情况。
方法
- 通过遍历方式加和计算,注意需要处理正负号和字母的情况,以及数越界的情况。
代码实现
// 思路1
public class Solution {
public int atoi(String str) {
// write code here
if (str == null || str.trim().length() < 1)
return 0;
//处理掉前后空格
char[] arr = str.trim().toCharArray();
int sign = 1, index = 0;
//判断正负号
if (arr[0] == '+')
index++;
if (arr[0] == '-') {
sign = -1;
index++;
}
int num = 0;
for (int i = index; i < arr.length; i++) {
if (arr[i] - '0' >= 0 && arr[i] - '9' <= 0) {
//如果当前运算会越界的时候,直接输出结果
if (num > Integer.MAX_VALUE / 10 || num == Integer.MAX_VALUE / 10 && arr[i] - '7' > 0) {
if (sign > 0)
return Integer.MAX_VALUE;
else
return Integer.MIN_VALUE;
}
num = 10 * num + arr[i] - '0';
} else
//如果是字母,跳出循环
break;
}
return num * sign;
}
}
时间复杂度分析:
O(N):遍历数组
空间复杂度分析:
O(N):额外的char数组空间
小伙伴如果想测试的话,可以直接到牛客网这个链接做测试